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

时间:2019-04-24 21:38:26

标签: 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);
    }
}

1 个答案:

答案 0 :(得分:7)

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

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

  • Kotlin属性由访问器方法(getter,如果可写,setter)和(如果需要)后备字段组成。这些属性将转换为私有字段,并以常规方式命名为具有相关可见性的方法(getField()setField();如果属性称为{{,则为isField()setField() 1}})。

综上所述,您可以从Java代码中以以下方式引用问题中的属性:

isField

(有关如何从Java访问Kotlin的详细信息,请访问here。)