如何在Java中引用Kotlin对象类型?

Xi *_*Wei 0 java kotlin

我有如下的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)

gid*_*dds 7

这里有两件事,都与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的完整详细信息,请点击此处。)