0

正如我们所知,Kotlin 和 Java 是可互操作的。当我尝试访问 Kotlin 代码中的 Java 静态变量时,它可以工作,但是当我尝试访问 Java 中的伴随对象时,它不起作用。

4

3 回答 3

3

Kotlin 本身没有静态。

伴随对象的属性可以在 Java 中通过显式引用Companion实例来访问:

class MyKotlinClass {
    companion object {
        val someProperty = 42
    }
}

来自Java:

int someProperty = MyKotlinClass.Companion.getSomeProperty();

您还可以使用特定于 JVM 的注释强制 Kotlin 输出带有静态成员的字节码(对于 Java):

class MyKotlinClass {
    companion object {
        @JvmStatic
        val someProperty = 42
    }
}

来自Java:

int someProperty = MyKotlinClass.getSomeProperty();
于 2021-09-21T09:15:10.250 回答
1

你只需要添加JvmStatic注释

companion object{
    @JvmStatic
    val x=10
}
于 2021-09-21T08:55:05.777 回答
1

您需要Companion明确指定。爪哇:

    MyFragment newFragment = MyFragment.Companion.newInstance();

那是因为同伴的方法不是静态的。伴侣是静态的,但它的方法是常规的实例方法。

于 2021-09-21T09:10:55.617 回答