2009-05-05 6 views
3

Ich erstelle einige einfache Groovy-Klassen, z.Wie MetaClass-Eigenschaft in einer Groovy-Klasse zu "verstecken"

, die in einer Java-Methode verwendet werden, die auf einer Reflexion beruht, um die Objekteigenschaften, z. Alter und Name. Das Problem ist, dass metaClass auch als Eigenschaft angezeigt wird. Das Aktualisieren der Java-Methode zum Ignorieren dieser Eigenschaft ist keine Option. Ich habe versucht, die MetaClass-Eigenschaft auf null zu setzen, aber das hat nicht funktioniert.

+0

Es wird andere Mitglieder durch den Compiler in anderen Kontexten (wie der interne äußere Verweis in einem inneren) hinzugefügt werden Klasse). Vielleicht können Sie den Reflexionscode aktualisieren, um nur paket/protected/public Eigenschaften widerzuspiegeln? –

+0

hast du einen Weg gefunden, MetaClass zu verstecken? –

+0

Nein, ich habe gerade daran gearbeitet. – Joel

Antwort

0

MetaClass wird während der Erstellung für eine Groovy-Klasse injiziert. IMHO Ich glaube nicht, dass du es auf Null setzen kannst. Die setMetaClass-Methode, die Sie aufgerufen haben, setzt nur jede benutzerdefinierte Metaklasse, die Sie in Ihrer Klasse festgelegt haben, auf Null und nicht die, die während der Konstruktion eingefügt wird.

1

Wenn Sie diese Klassen aus Java und Groovy verwenden, erstellen Sie einfach die POJOs in Java und nicht Groovy. Ich weiß, dass dies Ihre Frage nicht beantwortet, aber es wäre nett zu wissen, warum die Entscheidung, Groovy für die POJOs zu verwenden

Verwandte Themen