内には、invokeMethodによってStackOverflowErrorが迎撃可能性がありInterceptorTest
がGroovyInterceptable
を実装するというクラス、次のようにそのinvokeMethod
がオーバーライドしていました:なGroovy:インターセプタ
class InterceptorTest implements GroovyInterceptable{
def invokeMethod(String name,args){
println "intercepting call! " //println a short message
}
}
を私が迎撃されるクラスInterceptorTest
は、すべてのメソッドを委譲するだろうと思いましたinvokeMethod
への呼び出し、次のように動作するはずですので、残念ながら
def interceptor=new InterceptorTest()
println interceptor.work()
、私は一見のボディで、StackOverflowErrorがしましたしかし、私はそれが起こった理由を知りませんでした。カウンターパートとして
、私はしませんprintln
、関数本体を変更したが、ちょうどreturn
メッセージ:
class InterceptorTest implements GroovyInterceptable{
def invokeMethod(String name,args){
"intercepting call! " //return a short message
}
}
それがうまく働いた:
def interceptor=new InterceptorTest()
println interceptor.work() //get "intercepting call!"
しかし、なぜ?