Частный геттер и публичный сеттер для собственности Котлин

Как сделать недвижимость в Котлине, у которой есть частный геттер (или просто нет), но имеет публичный сеттер?

var status private get 

не работает с ошибкой: Getter visibility must be the same as property visibility

В моем случае причина в Java-взаимодействии: я хочу, чтобы мой Java-код мог вызвать setStatus но не getStatus .

В настоящее время в Котлине невозможно иметь собственность с сеттера, которая более заметна, чем свойство. В этом вопросе есть проблема с языковым дизайном в этом вопросе, не стесняйтесь смотреть / голосовать за него или делиться своими делами: https://youtrack.jetbrains.com/issue/KT-3110

В текущей версии Kotlin (1.0.3) единственным вариантом является использование отдельного метода сеттера следующим образом:

 class Test { private var name: String = "name" fun setName(name: String) { this.name = name } } 

Если вы хотите ограничить доступ внешних библиотек к получателю, вы можете использовать internal модификатор видимости, позволяющий по-прежнему использовать синтаксис свойств в библиотеке:

 class Test { internal var name: String = "name" fun setName(name: String) { this.name = name } } fun usage(){ val t = Test() t.name = "New" }