正如我們所知,Kotlin和Java是可以相互操作的。當我試圖在Kotlin代碼中訪問Java靜態變數時,它可以作業,但當我試圖訪問Java中的同伴物件時,它卻不能作業。
uj5u.com熱心網友回復:
在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() 。
uj5u.com熱心網友回復:
你需要明確指定Companion。Java:
MyFragment newFragment = MyFragment.Companion.newInstance()。
這是因為companion的方法不是靜態的。Companion是靜態的,但是它的方法是常規的、實體的方法。
uj5u.com熱心網友回復:
你只需要添加JvmStatic注解
。companion object{
@JvmStatic
val x=10
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328696.html
標籤:
