Kotlin弃用的同伴实例

时间:2018-11-26 17:30:30

标签: kotlin

在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;()

1 个答案:

答案 0 :(得分:3)

放置@Deprecated注释是一种中间解决方案,以避免在修复编译器错误时破坏二进制兼容性。当伴生对象是私有对象时,不应将字段生成为公共字段,但是由于疏忽而导致了该字段的生成。在Kotlin 1.4中,它将被标记为私有。

有关更多信息,请参见this issue