在Kotlin中创建private companion object
时,为什么Companion
静态变量在字节码中标记为@Deprecated public
?仅仅是一种“模拟” private
行为的变通方法,这种行为会阻止开发人员使用该字段(因为公共同伴对象不会被标记为已弃用)?
示例:
class MyClassWithCompanion {
private companion object {
private val FOO = "FOO"
}
}
// DEPRECATED
// access flags 0x20019
public final static LMyClassWithCompanion$Companion; Companion
@Ljava/lang/Deprecated;()
答案 0 :(得分:3)
放置@Deprecated
注释是一种中间解决方案,以避免在修复编译器错误时破坏二进制兼容性。当伴生对象是私有对象时,不应将字段生成为公共字段,但是由于疏忽而导致了该字段的生成。在Kotlin 1.4中,它将被标记为私有。
有关更多信息,请参见this issue。