2010-07-22 11 views
6

Groovy Beans sind großartig, aber ich bin nur neugierig, ob es möglich ist, ein Klassenmitglied als privat zu deklarieren und Accessoren dafür nicht einfach zu generieren? Die Seite http://groovy.codehaus.org/Groovy+Beans>Groovy Beans behandelt dieses Thema nicht. Das einzige, was mir einfällt, wäre, die Accessoren zu definieren und sie privat zu machen.Wie deaktiviere ich die Generierung von Groovy Accessoren?

Antwort

10

Groovy fügt keine Accessoren hinzu, wenn das Element mit einem Zugriffsmodifizierer deklariert ist: privat, geschützt oder öffentlich. Wenn Sie keinen Accessor benötigen, fügen Sie einfach den entsprechenden Modifikator hinzu. Hier ist ein Beispiel, das veranschaulicht dies:

class Test1 { private int blat } 
println Test1.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 
class Test2 { protected int blat } 
println Test2.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 
class Test3 { public int blat } 
println Test3.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 
class Test4 { int blat } 
println Test4.metaClass.getMethods()*.name.findAll { it.endsWith("Blat") } 

Drucke:

[] 
[] 
[] 
[getBlat, setBlat] 
+0

Das ist ziemlich cool. Ich hatte gerade angenommen, dass öffentliche Mitglieder ihre Accessoren automatisch generieren ließen, aber nicht privat oder geschützt waren. – Blacktiger

+0

Ja, in der Tat scheint es, dass "Öffentlichkeit" ZUBEHÖR machen sollte, aber ich muss mehr recherchieren. – Vinny

Verwandte Themen