| 

.NET C# Java Javascript Exception

Methode in Metaklasse überschreiben

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Methode in Metaklasse überschreiben

loombi - 05.04.2010 12:35
Hallo

Vielleicht kann mir jemand bei folgendem Problem helfen:

Ich habe eine Klasse Person mit einer Methode halloSagen.

package ch.zhaw
class Person{

	static String halloSagen(String name){
		"Hallo1 $name in der Klasse"
	}
}

Nun erzeuge ich eine neue Metaklasse PersonMetaClass und lege sie in folgende Packagestruktur: groovy.runtime.metaclass.<name des Package>, somit wird sie automatisch von Groovy zur Laufzeit in die MetaClassRegistry hinzugefügt.

package groovy.runtime.metaclass.ch.zhaw
import java.lang.reflect.Modifier;
class PersonMetaClass extends MetaClassImpl {
	
	PersonMetaClass(MetaClassRegistry registry, Class objClass) {
		
		super(registry, objClass)
		getClass().declaredMethods.each { method -> //{{1}}
			if(Modifier.isStatic(method.modifiers) //{{2}}
				&& !method.name.contains('$')) { //{{3}}
				addNewInstanceMethod(method) //{{4}}
			}
		}
		
		super.initialize()
	}

	static String halloSagen(obj, name){
		"Hallo1 $name in Metaklasse"
	}
}
Quelle: Joachim Baumann, Groovy. Grundlagen für fortgeschrittene Techniken, S. 297

Wenn ich nun eine neue Instanz der Klasse Person erzeuge und die Methode halloSagen aufrufe, dann wird nicht die überschriebene Methode der Metaklasse, sondern die in der normalen Klasse aufgerufen. Jedoch sollte aber meiner Meinung nach die Methode in der Metaklasse aufgerufen werden, da ich diese ja überladen habe?

Kennt jemand vielleicht das Problem?

Danke im Voraus für die Antworten!

Gruss Loombi


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Methode in Metaklasse überschreiben" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.