我的Kotlin对象如下:
object TestObject {
val name: String = "Hi"
}
如何用Java引用TestObject
?以下代码无法理解TestObject.name
:
public class Main {
public static void main(String[] args) {
System.out.println(TestObject.name);
}
}
答案 0 :(得分:7)
这里发生了两件事,都与Kotlin / JVM如何生成Java字节码有关。 (这些是其他Kotlin代码中看不到的实现细节,但是当您从Java访问它时,这些细节就变得显而易见。)
将单例对象转换为类,并将其单个实例存储在该对象的名为INSTANCE
的字段中。
Kotlin属性由访问器方法(getter,如果可写,setter)和(如果需要)后备字段组成。这些属性将转换为私有字段,并以常规方式命名为具有相关可见性的方法(getField()
和setField()
;如果属性称为{{,则为isField()
和setField()
1}})。
综上所述,您可以从Java代码中以以下方式引用问题中的属性:
isField
(有关如何从Java访问Kotlin的详细信息,请访问here。)