【问题标题】:Public fields for Java compatibility用于 Java 兼容性的公共字段
【发布时间】:2017-04-23 17:16:10
【问题描述】:

我发现最近对 Kotlin 作为一种语言产生了兴趣,因为我们开发的平台是基于 Java 6 的,因此缺乏近年来为 Java 带来的任何语法糖。

只有一件事使得在开发中无法使用 Kotlin 而不是 Java,那就是我们开发的平台在内部使用了一些反射并且要求成员是公共的。否则它将无法正常工作。

因此,从 Kotlin 文件生成的字节码实际上会生成公共 getter 和 setter,而字段本身仍然是私有的。

有没有办法克服这个问题,让我得到真正的公共领域?

我知道需要公共字段的设计失败,但系统对我们来说是一个黑盒子,我们无法改变它必须这样的事实。

【问题讨论】:

  • 注释@JvmField 对你有用吗?
  • 就是这样!甜的!太简单。非常感谢!
  • 根据docs.oracle.com/javase/tutorial/java/javaOO/classvars.html,“成员”指的是方法和字段。您可能的意思是“字段”。我已经编辑了问题。
  • @marstran 考虑将您的评论作为答案,以便将问题标记为已解决。

标签: field kotlin member public


【解决方案1】:

注释@JvmField 应该对您有所帮助。它使 Kotlin 编译器将属性公开为 JVM 上的字段。见这里:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-field/

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2011-03-07
    • 2012-04-18
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多