从Java访问Kotlin类对象

Wil*_*lka 8 java kotlin

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

public class Foo {
    public class object {
        public val SomeValue : Int = 0
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

我正在使用Kotlin 0.5.1.

Ima*_*shi 11

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

@JvmField var addressLocationBox: ToOne? = null
Run Code Online (Sandbox Code Playgroud)


小智 7

data class YourClass(@JvmField val name: String)
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到SO。请在您的答案中添加一些解释。 (9认同)

And*_*lav 5

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