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



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

这里有两件事,都与 Kotlin/JVM 如何生成 Java 字节码有关。 (这些是在其他 Kotlin 代码中看不到的实现细节,但当您从 Java 访问它时会变得明显。

  • 单例对象被转换为类,其单个实例存储在该对象的一个名为 INSTANCE 的字段中。

  • Kotlin 属性由访问器方法(getter 和 setter,如果可写,setter(和(如果需要(支持字段组成。 这些被转换为私有字段,并以常规方式命名具有相关可见性的方法(getField()setField(),或者isField()setField()属性是否称为isField(。

综上所述,您可以将 Java 代码中问题中的属性引用为:

TestObject.INSTANCE.getName()

(有关如何从 Java 访问 Kotlin 的完整详细信息在这里。

最新更新