Котлин: общедоступный получить частный набор var


126

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

Ответы:


194
var setterVisibility: String = "abc" // Initializer required, not a nullable type
    private set // the setter is private and has the default implementation

См .: Свойства Getter и Setter


13
Обратите внимание, что это private setдолжно быть на новой строке.
Jasper Blues

30
... или в той же строке после точки с запятой:var abc: String = ""; private set
Boris B.

4
Однако я не понимаю, что делать с полем основного конструктора.
androidguy

2
@ user3175580 Это невозможно. Используйте локальное поле внутри основного конструктора, а затем присвойте значение свойству, например «class Foo (_bar: String) {var bar: String = _bar}
D3xter

3
@JasperBlues ... иначе вам нужно поставить точку с запятой раньше private set.
Moses Aprico


3

var name : String = "Peter"
    private set

По умолчанию все свойства и функции общедоступны в Kotlin. Следовательно, сеттер должен быть явно объявлен закрытым, в то время как геттер по умолчанию открыт.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.