从重写的Java类调用方法。

时间:2012-06-19 10:07:59

标签: groovy

我在从java类调用overriden方法时遇到问题。 我有以下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脚本覆盖getFirst(),以便它调用called()

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

base.getFirst()

我该如何实现?

1 个答案:

答案 0 :(得分:2)

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

为什么不按正常方式去做?

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