gpt4 book ai didi

java - 如何从 Java 中隐藏 Kotlin 的 lateinit var 支持字段?

转载 作者:IT老高 更新时间:2023-10-28 13:35:42 25 4
gpt4 key购买 nike

在 Kotlin 中,假设我有课:

class MyKotlinClass {
lateinit var field: String
}

根据docs :

Late-Initialized properties are also exposed as fields. The visibility of the field will be the same as the visibility of lateinit property setter.

我可以在 java 代码中使用 myKotlinClass.fieldmyKotlinClass.getField()。我想禁用字段访问并仅通过 gettersetter 进行访问。

我怎样才能做到这一点并保持 lateinit 修饰符?

最佳答案

您可以使用 @JvmSynthetic它隐藏了 Java(而不是 Kotlin)的声明。只需 annotate the backing field属性(property):

@field:JvmSynthetic
lateinit var field: String

虽然该字段将在字节码中保留为 public,但它也将具有 synthetic 修饰符,这会阻止它在 Java 源代码中使用。但是,该字段似乎仍然可以在运行时通过反射访问。

另见:另一个 question about @JvmSynthetic (虽然那里没有明确的答案)。

关于java - 如何从 Java 中隐藏 Kotlin 的 lateinit var 支持字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com