【问题标题】:Accessing Kotlin class object from Java从 Java 访问 Kotlin 类对象
【发布时间】:2020-04-07 19:06:20
【问题描述】:

我有一个 Kotlin 类,它有一个类对象,例如

public class Foo {
    public class object {
        public val SomeValue : Int = 0
    }
}

如果我在 Java 中使用这个类,我如何访问类对象中的 SomeValue?如果它是一个具有静态属性的 Java 类,我只会使用 Foo.SomeValue - 但我不能在这里这样做。

IntellIJ 显示我可以访问 Foo.object.$instance,但 $instance 没有 getSomeValue 或类似的东西。如果我尝试使用 $instance.SomeValue ,当我构建错误消息时会说:

SomeValue 在 Foo.object 中具有私有访问权限

我正在使用 Kotlin 0.5.1。

【问题讨论】:

  • 您也可以将其设为@JvmStatic,允许它作为Foo 类的静态成员访问。请参阅有关从 Java 到 Kotlin 的互操作性的完整文档kotlinlang.org/docs/reference/…

标签: java kotlin


【解决方案1】:

作为一种解决方法,您应该能够使用 @JvmField 使 Kotlin 字段可见:

@JvmField var addressLocationBox: ToOne? = null

【讨论】:

    【解决方案2】:

    getSomeValue() 的“缺失”是 IDE 中的一个错误。如果你使用它,它编译OK。 我创建了一个问题:http://youtrack.jetbrains.com/issue/KT-3337

    【讨论】:

      【解决方案3】:
      data class YourClass(@JvmField val name: String)
      

      【讨论】:

      • 欢迎来到 SO。请为您的答案添加一些解释。
      • 作为解释为什么会这样,如果您在 Kotlin 中使用数据类,如果您希望变量为可从 Java 访问。
      猜你喜欢
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 2020-06-20
      • 1970-01-01
      相关资源
      最近更新 更多