Геттери та сетери автоматично генеруються в Kotlin. Якщо ви пишете:
val isEmpty: Boolean
Він дорівнює такому коду Java:
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
У вашому випадку модифікатор приватного доступу є зайвим - isEmpty є приватним за замовчуванням, і доступ до нього може отримати лише геттер. Коли ви намагаєтесь отримати властивість isEmpty свого об'єкта, ви викликаєте метод get у реальному. Для більш глибокого розуміння геттерів / сеттерів у Kotlin: два наведені нижче зразки коду рівні:
var someProperty: String = "defaultValue"
і
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
Також я хочу зазначити, що this
в геттері - це не ваша властивість - це екземпляр класу. Якщо ви хочете отримати доступ до значення поля в геттері або сеттері, ви можете використовувати зарезервоване слово field
для цього:
val isEmpty: Boolean
get() = field
Якщо ви хочете лише мати метод get у відкритому доступі - ви можете написати такий код:
var isEmpty: Boolean
private set
завдяки приватному модифікатору біля встановленого доступу ви можете встановити це значення лише в методах всередині вашого об'єкта.
In your case the private access modifier is redundant
Як Мовляв, за замовчуванням модифікатор документа Kotlin є загальнодоступним. kotlinlang.org/docs/reference/visibility-modifiers.html