Une classe nommée InterceptorTest
mise en œuvre GroovyInterceptable
, qui pourrait être un intercepteur, a son invokeMethod
overrided comme suit:Groovy: obtenu StackOverflowError par invokeMethod au sein Interceptor
class InterceptorTest implements GroovyInterceptable{
def invokeMethod(String name,args){
println "intercepting call! " //println a short message
}
}
Je pensais que la classe InterceptorTest
être un intercepteur déléguerait toutes les méthodes appelle à invokeMethod
, de sorte que les éléments suivants devraient fonctionner:
def interceptor=new InterceptorTest()
println interceptor.work()
Malheureusement, je suis un StackOverflowError, apparemment au corps de invokeMethod
, mais je n'avais aucune idée pourquoi cela est arrivé.
En contrepartie, je modifié le corps de la fonction, non println
mais juste return
message:
class InterceptorTest implements GroovyInterceptable{
def invokeMethod(String name,args){
"intercepting call! " //return a short message
}
}
puis il a bien fonctionné:
def interceptor=new InterceptorTest()
println interceptor.work() //get "intercepting call!"
Mais POURQUOI?