Zugriff auf Objekt-properties in groovy verwenden []
Sagen, ich habe den folgenden code in groovy:
class Human {
Face face
}
class Face {
int eyes = 2
}
def human = new Human(face:new Face())
Möchte ich den Zugriff auf die eyes
Eigenschaft, die über die []
:
def humanProperty = 'face.eyes'
def value = human[humanProperty]
Aber das funktioniert nicht so wie ich erwartet (wie dieser versucht, auf eine Eigenschaft mit dem Namen 'Gesicht.Augen' auf das Menschliche Objekt, nicht die Augen-Eigenschaft auf den menschlichen.Gesicht Eigenschaft).
Gibt es einen anderen Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssten Sie bewerten den string zu erhalten, um die Immobilie, die Sie benötigen. Um dies zu tun, können Sie entweder:
(das teilt die
humanProperty
in eine Liste von property-Namen, dann, beginnend mit derhuman
- Objekt, ruft jede Eigenschaft wiederum, übergeben das Ergebnis an die nächste iteration.Oder, Sie könnten mit der Eval-Klasse, um so etwas wie:
Verwenden
[]
notation, Sie würde tun müssen:Eine einfachere Möglichkeit wäre, einfach ausführen:
Aber wenn Sie nicht wissen, die erforderlichen Werte ('Gesicht' und 'Augen'), es ist auch ein einfacher und klarer Weg.