[groovy]Stackoverflow bei invokeMethod

Status
Nicht offen für weitere Antworten.

foobar

Top Contributor
Hi,

folgendes Beispiel funktioniert:

Code:
import org.codehaus.groovy.runtime.InvokerHelper
class HelloWorld  implements GroovyInterceptable
{
    def sayHello()
    {
        println("sayHello");
    }
    
    Object invokeMethod(String name, Object args)
    {
        MetaClass meta = InvokerHelper.getMetaClass(this);
        def ret        = meta.invokeMethod(this, name, args);
       
        System.out.println("invoke called "+name );
        return ret;
    }
}
new HelloWorld().sayHello();


wenn ich aber in der invokeMethod anstatt System.out.println() nur println("invoke called "+name ) schreibe, bekomme ich einen Stackoverflow, weil auch der Aufruf von println durch meine invokeMethod abgefangen wird. Warum ist das so bzw. was genau ist println? Wo und wie wurd pritln als Alias für System.out.println() deklariert?
 
S

SlaterB

Gast
es ist doch nur die Frage, ob sich invokeMethod() nur auf das neudefinierte sayHello bezieht oder auch andere Methoden wie anscheinend println quasi geerbt wurde,

was gibt es daran zu verstehen, ist doch reine Definition, ob es so oder anders ist
 

foobar

Top Contributor
was gibt es daran zu verstehen, ist doch reine Definition, ob es so oder anders ist
Ich war eben verwundert darüber, daß meine Klasse die von Object erbt auch noch andere Methoden kennt, die nicht Teil des JDK sind.
Jetzt weiß ich wie es funktioniert.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben