如何区分静态和动态方法,避免使用StackOverflowError

时间:2015-05-26 14:05:25

标签: groovy

我在委托中使用methodMissing。

为了避免这样的错误,有什么可能: java.lang.StackOverflowError的 只是因为:

def methodMissing(String methodName, args) { 
pritln "did you notice the method name mistake ?"
}

我在想一个区分静态/动态的机制(即在闭包时调用.call()的时候)

任何指针?

1 个答案:

答案 0 :(得分:0)

这个小的Groovy脚本怎么样?

def methodMissing(String methodName, args) {
   println "in methodMissing"
   if (!methodCalled()) {
      pritln "did you notice the method name mistake ?"
   }
}

def methodCalled(methodName = 'methodMissing') {
   Thread.currentThread().getStackTrace().findAll {it.className == this.class.name}.methodName.contains methodName
}

nothingHere()