1
得到的StackOverflowError通過invokeMethod中名爲InterceptorTest
實施GroovyInterceptable
,A級,這可能是一個攔截器,有其invokeMethod
overrided如下: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!"
但爲什麼呢?