Getters e setters são gerados automaticamente em Kotlin. Se você escrever:
val isEmpty: Boolean
É igual ao seguinte código Java:
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
No seu caso, o modificador de acesso privado é redundante - isEmpty é privado por padrão e pode ser acessado apenas por um getter. Ao tentar obter a propriedade isEmpty do seu objeto, você chama o método get em real. Para entender melhor os getters / setters em Kotlin: os dois exemplos de código abaixo são iguais:
var someProperty: String = "defaultValue"
e
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
Também quero salientar que this
em um getter não é sua propriedade - é a instância da classe. Se você deseja obter acesso ao valor do campo em um getter ou setter, pode usar a palavra reservada field
para ele:
val isEmpty: Boolean
get() = field
Se você deseja apenas ter um método get em acesso público - você pode escrever este código:
var isEmpty: Boolean
private set
devido ao modificador privado próximo ao acessador set, você pode definir este valor apenas em métodos dentro do seu objeto.
In your case the private access modifier is redundant
Como? O documento do Kotlin diz que o modificador padrão é público. kotlinlang.org/docs/reference/visibility-modifiers.html