Kotlin устарел сопутствующий экземпляр - PullRequest
0 голосов
/ 26 ноября 2018

Почему при создании private companion object в Kotlin статическая переменная Companion помечается как @Deprecated public в байт-коде?Это просто обходной путь для «имитации» поведения private, отговаривающего разработчиков использовать это поле (поскольку общедоступный сопутствующий объект не помечается как устаревший)?

Пример:

Kotlin

class MyClassWithCompanion {
    private companion object {
        private val FOO = "FOO"
    }
}

Байт-код

// DEPRECATED
// access flags 0x20019
public final static LMyClassWithCompanion$Companion; Companion
@Ljava/lang/Deprecated;()

1 Ответ

0 голосов
/ 26 ноября 2018

Аннотация @Deprecated помещена в качестве промежуточного решения, чтобы избежать нарушения бинарной совместимости при исправлении ошибки компилятора.Поле не должно создаваться как общедоступное, когда объект-компаньон является частным, но из-за недосмотра оно было.В Kotlin 1.4 он будет помечен как закрытый.

См. эту проблему для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...