1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用

Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用

时间:2021-03-27 22:29:33

相关推荐

Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用

只能通过当前类名NioUtil调用静态成员

package com.zxl.scalaimport cn.hutool.core.io.{FileUtil, IoUtil, NioUtil}import java.io.BufferedInputStreamimport java.io.BufferedOutputStreamobject HuToolsDemo {def main(args: Array[String]): Unit = {val in: BufferedInputStream = FileUtil.getInputStream("D:/Develop/kubectl/test.txt")val out: BufferedOutputStream = FileUtil.getOutputStream("D:/Develop/kubectl/test2.txt")//编译不通过,不能通过子类调用父类的静态成员 public class IoUtil extends NioUtil//val copySize: Long = IoUtil.copy(in, out, IoUtil.DEFAULT_BUFFER_SIZE)//只能调用当前类的静态成员,并且只能通过类名调用val copySize: Long = IoUtil.copy(in, out, NioUtil.DEFAULT_BUFFER_SIZE)}}

进一步佐证

父类

package com.zxl.extend;/*** 父类* */public class JSON {public static String parser(String str) {return "static JSON.parser: " + str;}public String format(String str) {return "JSON.format: " + str;}}

子类

package com.zxl.extend;/*** 子类* */public class JSONObject extends JSON {public static String childParser(String str) {return "static JSONObject.childParser: " + str;}public String childFormat(String str) {return "JSONObject.childFormat: " + str;}// 不同点:java中调用静态方法可以使用对象或者类public static void main(String[] args) {JSONObject object = new JSONObject();System.out.println(object.childFormat("sssss"));System.out.println(object.childParser("sssss"));System.out.println(JSONObject.childParser("sssss"));}}

scala调用java静态方法

package com.zxl.extend/*** 总结:* 1. scala中调用java中静态方法只能使用当前类名,不能使用对象* 2. java中静态方法尽管是public在scala中都无法使用子类调用* 3. java中非静态子类继承父类的方法,在scala中可以使用子类对象调用*/object TestJavaCode {def main(args: Array[String]): Unit = {testJavaCode()}def testJavaCode(): Unit ={val str: String = "some contents"val json: JSON = new JSON()val jo: JSONObject = new JSONObject()// 尝试调用JSONObject中继承JSON的方法println(jo.format(str))//子类实例调用父类的static方法,编译都通不过//println(jo.parser(str))// 尝试调用JSON的方法println(json.format(str))//调用类的static方法,不能通过对象来调,编译都通不过//println(json.parser(str))//调用类的static方法,只能通过类名来调println(JSON.parser(str))// 尝试调用JSONObject中自己的方法println(jo.childFormat(str))//调用类的static方法,只能通过类名来调println(JSONObject.childParser(str))}}

总结

scala中调用java中静态方法只能使用当前类名,不能使用对象java中静态方法尽管是public在scala中都无法使用子类调用java中非静态子类继承父类的方法,在scala中可以使用子类对象调用

Scala调用Java静态成员及静态方法注意点——只能通过当前类名调用而不能借助子类调用父类静态成员/方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。