在使用配套对象和Java反射时遇到了一些有趣的事情。我不确定它是否有意为之,或者我只是没有完全理解事物。
我有这个代码
public class TestClass {
companion object {
public platformStatic var data: String? = null
}
}
data
字段最终通过另一个类的反射填充。
我发现,如果我使用 TestClass.javaClass
访问该类,我会得到内部配套类,该类仅具有访问该字段的方法。通过javaClass<TestClass>()
访问它使我获得了预期的Java类,并具有对字段的完全访问权限。
我只是错过了一些明显的东西吗?这种行为有什么原因吗?
静态字段存储在外部类中以方便Java互操作:您可以在Java中说TestClass.data
引用该字段(这应该是您首先将其标记为platformStatic
的原因)。