2016-12-08 3 views
8

Я нашел недавний интерес к Kotlin как к языку, потому что платформа, которую мы разрабатываем для Java 6, и, следовательно, не имеет никакого синтаксического сахара, который в последние годы принес на Java.Публичные поля для совместимости с Java

Есть только одна вещь, которая делает невозможным использование Kotlin над Java в процессе разработки, то есть платформа, которую мы разрабатываем, использует внутреннее отражение и требует, чтобы участники были общедоступными. Это не будет работать иначе.

Итак, байт-код, созданный из файла Kotlin, фактически создает публичные геттеры и сеттеры, сами по себе поля остаются закрытыми.

Есть ли способ преодолеть это, поэтому я получаю реальные публичные поля?

Я знаю о неудаче проектирования, которая требует публичных полей, но система является для нас черным ящиком, мы не можем изменить тот факт, что это должно быть так.

+5

Может ли аннотация '@ JvmField' работать на вас? – marstran

+0

Вот и все! Милая! Так легко. Огромное спасибо! –

+0

Согласно https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html, «член» относится к обоим, методам и полям. То, что вы, вероятно, имеете в виду, это «поля». Я отредактировал вопрос. –

ответ