I getter ei setter sono generati automaticamente in Kotlin. Se si scrive:
val isEmpty: Boolean
E 'uguale al seguente codice Java:
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
Nel tuo caso il modificatore di accesso privato è ridondante - isEmpty è privato per impostazione predefinita e si può accedere solo da un getter . Quando si tenta di ottenere la proprietà isEmpty dell'oggetto si chiama il metodo get in real. Per una maggiore comprensione di getter/setter in Kotlin: due esempi di codice di seguito sono uguali:
var someProperty: String = "defaultValue"
e
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
anche io voglio sottolineare che this
in un getter non è vostra proprietà - è l'istanza di classe. Se si desidera ottenere l'accesso al valore del campo in un getter o setter è possibile utilizzare la parola riservata field
per esso:
val isEmpty: Boolean
get() = field
Se si vuole solo per avere un metodo get in accesso del pubblico - è possibile scrivere questo codice :
var isEmpty: Boolean
private set
causa il modificatore privato vicino la funzione di accesso set è possibile impostare questo valore solo nei metodi all'interno del vostro oggetto.
'Nel tuo caso il modificatore di accesso privato è ridondante' Come? Il modificatore predefinito di Kotlin doc è public. https://kotlinlang.org/docs/reference/visibility-modifiers.html –
@Niente sì sembra un campo pubblico, ma sotto il cofano si chiama il metodo getter – Cortwave
Il 'val isEmpty: Boolean' non verrà compilato come isEmpty non è ancora inizializzato, giusto? Sto solo iniziando a imparare Kotlin. Inoltre, cosa sta succedendo con 'get() = campo'? –