1
我想了解invokeMethod如何攔截Groovy中的方法調用。我似乎無法得到最基本的例子工作。Groovy MOP invokeMethod
class Person implements GroovyInterceptable {
def invokeMethod(String name,args) {
println "called invokeMethod $name $args"
}
def greet() {
println "Hello from greet()"
}
}
def p = new Person()
p.greet()
如果我嘗試運行這個例子,我得到以下錯誤。我錯過了什麼?
Caught: java.lang.StackOverflowError
java.lang.StackOverflowError
at Person.invokeMethod(Person.groovy:4)
at Person.invokeMethod(Person.groovy:4)
at Person.invokeMethod(Person.groovy:4)
...
println是Groovy對象的一種方法,它被抓到了,因此發送給我一個無限循環。 使用不受我們攔截點影響的System.out.println修復了問題。感謝Venkat(編程Groovy 2) – cfaddict