Mic*_*sin 10 java kotlin kotlin-lateinit
在Kotlin,假设,我有课:
class MyKotlinClass {
lateinit var field: String
}
Run Code Online (Sandbox Code Playgroud)
根据文件:
延迟初始化的属性也作为字段公开.该字段的可见性将与lateinit属性设置器的可见性相同.
我可以在java代码中使用myKotlinClass.field
或myKotlinClass.getField()
.我想禁用字段访问,只保留通过getter和setter访问.
我怎样才能实现这一目标并保持延迟修饰?
hot*_*key 13
您可以使用@JvmSynthetic
Java中的隐藏声明(而不是来自Kotlin).只需注释属性的支持字段:
@field:JvmSynthetic
lateinit var field: String
Run Code Online (Sandbox Code Playgroud)
虽然该字段将保留public
在字节码中,但它也将具有synthetic
修饰符,从而阻止它在Java源代码中使用.但是,该字段似乎仍可通过运行时的反射访问.
另见:另一个问题@JvmSynthetic
(虽然没有明确的答案).
归档时间: |
|
查看次数: |
803 次 |
最近记录: |