2010-04-06 12 views
8

Der Titel fragt alles: Wie bekommt man alle Eigenschaftsnamen einer Groovy-Klasse?Wie erhalten Sie alle Eigenschaftsnamen einer Groovy-Klasse?

Ist es überhaupt möglich? Ich dachte, ich könnte Sammlungssyntaxen mit Klassen verwenden, auch wenn es nicht zu funktionieren scheint.

+0

Dies ist eigentlich kein Duplikat von http://stackoverflow.com/questions/1477706/groovy-property-iteration weil diese Frage nur für die Eigenschaft bittet Namen, nicht den Namen und die Werte für den Zweck der Zuordnung. – pczeus

+0

@pczeus Wenn Sie wissen, wie man Namen und Werte bekommt, dann wissen Sie auch, wie man nur Namen bekommt. –

+0

@MarkRotteveel Das ist falsch. Durch Aufrufen von getProperties() erhalten Sie sowohl Namen als auch Werte. Es gibt keine Option, nur Namen zu erhalten. Ja, Sie können keySet() das Ergebnis, aber Sie haben bereits den Preis von Groovy bezahlt alle Getter() aufrufen und die Werte abrufen. Mein Punkt ist, dass es eine andere Option in Groovy gibt, nur die Eigenschaftsnamen zu erhalten, ohne die Strafe dafür zu zahlen, die Werte zu erhalten. In vielen Fällen spielt es keine Rolle, aber unabhängig davon ist dies keine tatsächliche doppelte Frage, da nur nach Namen gefragt wird. – pczeus

Antwort

10

Ich benutze groovy Compiler 2.4 Ich bekomme eine java.util.LinkedHashMap enthält alle Eigenschaften und ihre Werte durch den Aufruf getProperties() auf einem groovy Objekt zurückgegeben.

class PropertyDemoClass { 
    int firstProperty = 1; 
    String secondProperty = "rhubarb" 
    String thirdProperty = "custard" 
} 

PropertyDemoClass demoClass = new PropertyDemoClass() 
println demoClass.getProperties().toString() 

die Ergebnisse:

[firstProperty:1, secondProperty:rhubarb, class:class PropertyDemoClass, thirdProperty:custard] 
+0

Ein kleines Beispiel Code-Schnipsel wäre eine tolle Ergänzung ... –

Verwandte Themen