2012-06-19 60 views
2

我有一个从java类中调用overriden方法的问题。 我有以下的Java类:从重写的Java类调用方法。

public class Base 
{ 
    int state = 0; 
    public void called() 
    { 
     System.out.println("Hello, from called method: " + state); 
    } 

    public String getFirst() 
    { 
     return "From Base; 
    } 

    // 
    ... 
    // 
} 

我使用Groovy脚本覆盖0​​这使得它调用called()

def base = [ getFirst : { 
    called()     // this line has an error 
    "From Second" 
    }] as Base 

base.getFirst() 

如何实现这一点?

回答

2

不能使用代理魔术以这种方式......在地图声明的时候,它不知道它会成为基地代理,所以它会抛出错误

为什么不以正常的方式去做呢?

def base = new Base() { 
    public String getFirst() { 
    called() 
    "from me" 
    } 
} 
+0

嗯,它的工作原理。谢谢,我用google搜索了一个多小时,发现只有在关闭的情况下才能实现。 –