Getters und Setter werden automatisch in Kotlin generiert. Wenn Sie schreiben:
val isEmpty: Boolean
Es ist gleich dem folgenden Java-Code:
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
In Ihrem Fall der private Zugriffsmodifikator ist redundant - isEmpty standardmäßig privat und kann nur durch einen Getter zugegriffen werden . Wenn Sie versuchen, die isEmpty-Eigenschaft Ihres Objekts abzurufen, rufen Sie die get-Methode in real auf. Für mehr Verständnis von Getter/Setter in Kotlin: die beiden Codebeispiele unten sind gleich:
var someProperty: String = "defaultValue"
und
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
auch darauf hin, ich will, dass this
in einem Getter nicht Ihr Eigentum ist - es ist die Klasseninstanz. Wenn Sie den Zugriff auf den Wert des Felds in einem Getter erhalten möchten oder Setter können Sie das reservierte Wort field
dafür verwenden:
val isEmpty: Boolean
get() = field
Wenn Sie nur eine get-Methode in der Öffentlichkeit Zugang haben wollen - Sie diesen Code schreiben :
aufgrund des privaten Modifier in der Nähe des Set-Accessor können Sie diesen Wert nur in Methoden innerhalb Ihres Objekts festlegen.
'In Ihrem Fall ist der private Zugriffsmodifikator redundant. Wie? Der Standardmodifikator von Kotlin Doc ist öffentlich. https://kotlinlang.org/docs/reference/visibility-modifiers.html –
@Nichts ja es scheint wie öffentliches Feld, aber unter der Haube rufen Sie Getter-Methode – Cortwave
Die 'val isEmpty: Boolean' wird nicht kompilieren, wie isEmpty noch nicht ist initialisiert, oder? Fange gerade an, Kotlin zu lernen. Was passiert mit 'get() = field'? –