kotlin 中 const 和 val 的关系。
首先所有的 val 变量都会生成对应 getter 方法,var 变量会生成对应的 setter/getter 方法。
const 修饰符只能在 top level of a file or inside an object
,且只能修饰基本类型和String类型,且需要立即初始化。
又 const 只能修饰 val,不能修饰 var。
即 const val
修饰对象会生成对应 java 代码的 static final
0x01 栗子
1 | class KClass { |
注意在伴随类
companion object
中,_objVar
不是public,是private。
在java代码中,能访问KClass._conVal
,但不能KClass._objVal
,IDE提示是private
foo()方法在java中不能
KClass.foo()
调用,该方法属于KClass$Companion.class
,非KClass,Kotlin中作为语法糖能够类似静态方法以KClass.foo()
调用.
0x02
上面的栗子中,foo 方法在 java 中该怎么调用???
可以这样 KClass.Companion.foo();
以下java代码可通过
1 | public class Manager { |
0x02 kotlin to java
- Menu > Tools > Kotlin > Show Kotlin Bytecode
- Click on the Decompile button
- Copy the java code
Reference
参考:Kotlin———————-const详解
参考:How to convert a kotlin source file to a java source file