Groovy Meta-Programmierung - Hinzufügen von statischen Methoden zu Object.metaClass

8

Ich habe ein Groovy-Metaprogrammierungsproblem festgestellt, das ich nicht lösen kann.

Beim Hinzufügen der statischen Methode foo () zur Klasse FooBar funktioniert FooBar.foo () wie erwartet:

%Vor%

Allerdings füge ich stattdessen die gleiche statische Methode foo () zum Klassenobjekt hinzu, dann schlägt FooBar.foo () mit einer MissingMethodException fehl:

%Vor%

Warum ist das? Sollte nicht Object.metaClass.static.foo = { .. } foo () auch zu FooBar hinzufügen?

    
knorv 22.09.2009, 22:21
quelle

2 Antworten

11

Um das von Ihnen gesuchte Verhalten zu erhalten, müssen Sie ExpandoMetaClass.enableGlobally ()

aufrufen

Denken Sie daran, dass dies einen größeren Speicherbedarf hat als die normale Meta-Programmierung.

Ссылка

    
Rhysyngsun 23.09.2009, 11:02
quelle
1

Ich kann das anscheinend nicht funktionieren, auch nachdem ich ExpandoMetaClass.enableGlobally () am Anfang des Skripts hinzugefügt habe:

%Vor%     
TX T 25.08.2015 04:27
quelle

Tags und Links