在使用伴隨對象和Java反射時,將其轉化爲一些有趣的內容。我不確定它是否有意,或者我只是不完全理解事情。Kotlin同伴對象和反射
我有這樣的代碼
public class TestClass {
companion object {
public platformStatic var data: String? = null
}
}
的data
場最終被通過反射填補從另一個類。
我發現的是,如果我訪問類TestClass.javaClass
,我得到的內部伴侶類只有訪問該字段的方法。通過javaClass<TestClass>()
訪問它可以獲得期望的Java類,並且可以完全訪問這些字段。
我只是錯過了一些明顯的東西?是否有這種行爲的原因?
請注意,在當前Kotlin'platformStatic'已經更改爲註釋'@ JvmStatic'。此外,函數'javaClass()'不是'T :: class.java'(因爲'T :: class'返回Kotlin'KClass ','.java'擴展返回Java'類')。 。對於屬性的後期初始化,請參見[lateinit](https://kotlinlang.org/docs/reference/properties.html#late-initialized-properties)關鍵字。 –