Здесь происходит две вещи, обе связаны с тем, как Kotlin / JVM генерирует байт-код Java.(Это детали реализации, которые не видны из другого кода Kotlin, но становятся очевидными при доступе к нему из Java.)
Объект-одиночка переводится в класс, и его единственныйэкземпляр хранится в поле этого объекта с именем INSTANCE
.
Свойство Kotlin состоит из методов доступа (getter и, если доступно для записи, setter) и (при необходимости) поддержкиполе.Они переводятся в приватное поле, а методы с соответствующей видимостью называются обычным способом (getField()
и setField()
или isField()
и setField()
, если свойство называется isField
).
Собрав это вместе, вы можете сослаться на свойство в вопросе из кода Java как:
TestObject.INSTANCE.getName()
(Полная информация о том, как получить доступ к Kotlin из Java, приведена здесь .)