Public 个字段 Java 兼容性
Public fields for Java compatibility
我发现最近人们对 Kotlin 作为一种语言很感兴趣,因为我们开发的平台是基于 Java 6 的,因此缺乏近年来给 Java 带来的任何语法糖。
只有一件事导致在开发中无法在 Java 上使用 Kotlin,那就是我们开发的平台在内部使用了一些反射并要求成员是 public。否则它不会工作。
因此,从 Kotlin 文件生成的字节码实际上会生成 public 个 getter 和 setter,字段本身仍然是私有的。
有没有办法克服这个问题,让我得到真实的 public 字段?
我知道需要 public 字段的设计失败,但系统对我们来说就像一个黑盒子,我们无法改变它必须这样的事实。
注释@JvmField
应该对您有所帮助。它使 Kotlin 编译器将 属性 公开为 JVM 上的一个字段。看这里:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-field/
我发现最近人们对 Kotlin 作为一种语言很感兴趣,因为我们开发的平台是基于 Java 6 的,因此缺乏近年来给 Java 带来的任何语法糖。
只有一件事导致在开发中无法在 Java 上使用 Kotlin,那就是我们开发的平台在内部使用了一些反射并要求成员是 public。否则它不会工作。
因此,从 Kotlin 文件生成的字节码实际上会生成 public 个 getter 和 setter,字段本身仍然是私有的。
有没有办法克服这个问题,让我得到真实的 public 字段?
我知道需要 public 字段的设计失败,但系统对我们来说就像一个黑盒子,我们无法改变它必须这样的事实。
注释@JvmField
应该对您有所帮助。它使 Kotlin 编译器将 属性 公开为 JVM 上的一个字段。看这里:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-field/