2010-10-23 8 views
20

Der folgende Code legt eine private Methode fest. Also, wie privat ist wirklich privat?Was bedeutet "privat" in Groovy?

public class Person { 
private String name 
} 

def u = new Person(name:"Ron") 
println u.name 
+0

siehe http://stackoverflow.com/questions/3819794/how-to-define-private-getter-method-in-groovy-bean –

+3

@James - versuchen Sie es, es kompiliert ohne Fehler. – ripper234

+2

Groovy erzeugt gettes/setters für private Felder und wenn Sie versuchen, das private Feld wie u.name zu drücken, ruft Groovy die Methode u.getName() {this.name} auf oder erzeugt die Methode dafür. So sieht dieses Verhalten für mich gut aus. Jedenfalls hat Groovy eine Menge Probleme mit der Privatsphäre;) – dnim

Antwort

0

denke ich, dass wir diese zugreifen können, weil groovy Getter fügt und Setter für alle Variablen. Diese Methoden sind öffentlich und daher kann auf private Variablen außerhalb des Gültigkeitsbereichs zugegriffen werden, die Sie erwarten würden.

Wie bei privaten Methoden, können Sie mit dem Konzept von MetaClass überall hinkommen.