wie verschachtelte Eigenschaften in groovy abgerufen werden

8

Ich frage mich, wie man geschachtelte Eigenschaften in Groovy am besten abrufen kann, indem man ein gegebenes Objekt und eine beliebige "property" Zeichenkette nimmt. Ich würde gerne so etwas machen:

%Vor%

Ich habe es schwer gefunden, ein Beispiel dafür zu finden, dass andere das machen wollen, also verstehe ich vielleicht ein grundlegendes Groovy-Konzept nicht. Es scheint, als müsste es einen eleganten Weg dafür geben.

Als Referenz gibt es ein Feature in Wicket, das genau das ist, was ich suche, den PropertyResolver: Ссылка

Irgendwelche Hinweise würden geschätzt werden!

    
Nathan Beach 30.03.2011, 15:45
quelle

4 Antworten

22

Ich weiß nicht, ob Groovy einen eingebauten Weg dafür hat, aber hier sind zwei Lösungen. Führen Sie diesen Code in der Groovy-Konsole aus, um ihn zu testen.

%Vor%     
Dónal 30.03.2011, 16:14
quelle
2

Groovy Beans lässt Sie direkt auf Felder zugreifen. Sie müssen keine Getter / Setter-Methoden definieren. Sie werden für dich generiert. Wenn Sie auf eine Bean-Eigenschaft zugreifen, wird die Getter / Setter-Methode intern aufgerufen. Sie können dieses Verhalten umgehen, indem Sie den Operator. @ Verwenden. Siehe das folgende Beispiel:

%Vor%

Wenn Sie nicht mit Sammlungen arbeiten, können Sie einfach das Feld aufrufen, auf das Sie zugreifen möchten.

%Vor%

Wenn Sie auf ein Feld innerhalb einer Sammlung zugreifen möchten, müssen Sie das Element auswählen:

%Vor%     
Benjamin Muschko 30.03.2011 16:54
quelle
1

Sie können auch propertyMissing verwenden. So könnte man Groovy's eingebaute Methode nennen.

Deklarieren Sie dies in Ihrer Klasse:

%Vor%

Beziehen Sie sich dann wie gewünscht auf Ihre Eigenschaften:

%Vor%

Dies ist automatisch rekursiv und Sie müssen keine Methode explizit aufrufen. Dies ist nur ein Getter, aber Sie können auch eine zweite Version mit Parametern definieren, um einen Setter zu erstellen.

Der Nachteil ist, dass Sie, soweit ich das beurteilen kann, nur eine Version von propertyMissing definieren können, also müssen Sie entscheiden, ob Sie die dynamische Pfadnavigation verwenden möchten.

    
Charles Wood 11.11.2014 23:10
quelle
0

Siehe

Ссылка

Es verwendet $ {} -Syntax, die als Teil von GString

verwendet werden kann     
Dev Blanked 26.03.2013 11:40
quelle