正如我们所知,Kotlin 和 Java 是可互操作的。当我尝试访问 Kotlin 代码中的 Java 静态变量时,它可以工作,但是当我尝试访问 Java 中的伴随对象时,它不起作用。
问问题
130 次
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 回答