2012-06-19 101 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搜索了一個多小時,發現只有在關閉的情況下才能實現。 –