我有如下的Kotlin对象:
object TestObject {
val name: String = "Hi"
}
Run Code Online (Sandbox Code Playgroud)
我将如何TestObject用Java 引用?以下代码无法理解TestObject.name:
public class Main {
public static void main(String[] args) {
System.out.println(TestObject.name);
}
}
Run Code Online (Sandbox Code Playgroud)
这里有两件事,都与Kotlin / JVM如何生成Java字节码有关。(这些是其他Kotlin代码中看不到的实现细节,但是当您从Java访问它时,这些细节就变得显而易见。)
将单例对象转换为类,并将其单个实例存储在该对象的字段中INSTANCE。
Kotlin属性由访问器方法(getter,如果可写,setter)和(如果需要)后备字段组成。这些将转换为私有字段,并以常规方式命名具有相关可见性的方法(getField()和setField(),或者isField(),setField()如果调用该属性,则命名为isField)。
综上所述,您可以从Java代码中以以下方式引用问题中的属性:
TestObject.INSTANCE.getName()
Run Code Online (Sandbox Code Playgroud)
(有关如何从Java访问Kotlin的完整详细信息,请点击此处。)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |