[英]Accessing Kotlin class object from Java
我有一個 Kotlin class 它有一個 class object,例如
public class Foo {
public class object {
public val SomeValue : Int = 0
}
}
如果我從 Java 使用這個 class,我如何訪問 class ZA8CFDE6331BD59EB2ACZ66B8 中的 SomeValue 如果它是具有 static 屬性的 Java class,我只會使用 Foo.SomeValue - 但我不能在這里這樣做。
IntellIJ 顯示我可以訪問Foo.object.$instance
,但$instance
沒有 getSomeValue 或類似的東西。 如果我嘗試使用 $instance.SomeValue ,當我構建錯誤消息時會說:
SomeValue 在 Foo.object 中具有私有訪問權限
我正在使用 Kotlin 0.5.1。
作為一種解決方法,您應該能夠使用@JvmField
使 Kotlin 字段可見:
@JvmField var addressLocationBox: ToOne? = null
getSomeValue() 的“缺席”是 IDE 中的一個錯誤。 如果你使用它,它編譯正常。 我創建了一個問題:http: //youtrack.jetbrains.com/issue/KT-3337
data class YourClass(@JvmField val name: String)
要為生成的 Java class 設置自定義名稱,請使用 @JvmName 注釋:
Kotlin
@file:JvmName("DemoUtils")
package com.example
class Util
fun getTime() { /*...*/ }
Java
new com.example.Util();
com.example.DemoUtils.getTime();
此外,如果您使用@JvmMultifileClass ,那么:
@file:JvmName("Utils")
@file:JvmMultifileClass
package com.example
fun getDate() { /*...*/ }
Java
com.example.Utils.getDate();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.