我有这个类结构:
interface bug
{
def method()
}
public class A implements bug{
def method()
{
println "Works"
}
}
A varaiable = new A()
bug.metaClass.invokeMethod {
name,args ->
println "Came here"
}
varaiable.method()
当我这样做时,我得到Works
。为什么不Came here
?
我在做错的地方?
即使我这样做:
A.metaClass.invokeMethod {
name,args ->
println "Came here"
}
我只获得Works
。
答案 0 :(得分:1)
您正在使用
更改A
的metaClass
A.metaClass.invokeMethod { name,args ->
println "Came here"
}
构建variable
之后。如果你把这个块放在行
A varaiable = new A()
它应该像你期望的那样工作。
为了解决这个问题,你可以使用:
ExpandoMetaClass.enableGlobally()
实例将在每次调用时使用metaClass
进行检查,但是正如预期的那样,这会降低速度