Метод get()
не изменяет значение - но он меняет тип .(В любом случае, статический тип во время компиляции.)
Закрытое свойство является полем MutableLiveData
.Я не знаю этот тип, но он выглядит как класс или интерфейс, который оборачивает некоторые данные (в данном случае SingleLiveEventWrapper<Boolean>
) и позволяет их изменять.
Открытое свойство, однако,LiveData
.Вероятно, это суперкласс или суперинтерфейс MutableLiveData
, в котором отсутствуют методы, позволяющие изменять данные.Переопределенный метод getter просто возвращает значение частного свойства, но при этом он преобразует его в неизменяемый тип.
В результате код в классе может получить доступ к изменяемому полю, что другой код можеттолько получить доступ только для чтения.Таким образом, он фактически выполняет некоторую инкапсуляцию, ограничивая возможность изменения поля, в то же время позволяя видеть его.
(Вам не нужно явно вызывать метод получения; просто с помощью синтаксиса свойства myObject.showProgress
вызоветgetter для вас. В Kotlin все свойства получают метод getter - и, если var
setter; вам нужно только переопределить значения по умолчанию, если вы хотите другое поведение.)