Геттеры и сеттеры автоматически генерируются в Котлине. Если вы напишете:
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
из-за модификатора private рядом с набором доступа вы можете установить это значение только в методах внутри вашего объекта.
In your case the private access modifier is redundant
Как? В документе Kotlin говорится, что модификатор по умолчанию является общедоступным. kotlinlang.org/docs/reference/visibility-modifiers.html