Открытые поля для совместимости с Java
Я обнаружил недавний интерес к Kotlin как к языку, потому что платформа, для которой мы разрабатываем, основана на Java 6 и, следовательно, лишена какого-либо синтаксического сахара в последние годы, привнесенные в Java.
Есть только одна вещь, которая делает невозможным использование Kotlin поверх Java в разработке, то есть платформа, для которой мы разрабатываем, использует некоторые рефлексии внутри и требует, чтобы участники были открытыми. Это не будет работать иначе.
Таким образом, байт-код, сгенерированный из файла Kotlin, фактически создает общедоступные методы получения и установки, а сами поля все еще остаются закрытыми.
Есть ли способ преодолеть это, чтобы я получил реальные публичные поля?
Я знаю о неудаче проектирования, которая требует открытых полей, но система для нас является своего рода черным ящиком, мы не можем изменить тот факт, что так и должно быть.
1 ответ
Аннотация @JvmField
должен помочь тебе. Это заставляет Kotlin-компилятор выставлять свойство как поле в JVM. Смотрите здесь: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-field/