Kotlin hat Eigenschaften delegiert, was ein sehr nettes Feature ist. Aber ich finde heraus, wie man die Werte bekommt und setzt. Nehmen wir an, ich möchte den Wert der Eigenschaft erhalten, die delegiert wird. Wie kann ich in einer get() Methode auf den Wert zugreifen?Kotlin-Delegate-Eigenschaft, In einer get() -Methode, wie kann ich auf den Wert zugreifen?
Hier ist ein Beispiel dafür, wie ich umgesetzt haben:
class Example() {
var p: String by DelegateExample()
}
class DelegateExample {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "${property.name} "
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("${value.trim()} '${property.name.toUpperCase()} '")
}
}
fun delegate(): String {
val e = Example()
e.p = "NEW"
return e.p
}
Die Hauptfrage, vermag ich nicht zu verstehen ist: Wie kann ich den Wert auf die tatsächliche Eigenschaft festgelegt, an dem die Delegation Klasse zugeordnet ist. Wenn ich der Eigenschaft p
"NEW" zuweise, wie kann ich diesen Wert in der Variablen speichern oder den neuen Wert lesen, der an mit get übergeben wurde? Fehle ich etwas Grundlegendes hier? Jede Hilfe wird sehr geschätzt. Danke im Voraus.
Abrufen und Festlegen Operationen auf S. auf die Instanz des DelegateExample delegiert werden, so gibt es keine wirklichen p vom Typ Zeichenfolge. Verwenden Sie einfach eine Variable in DelegateExample, um den Wert zu speichern. –