2012-04-02 53 views
1

我在Groovy 1.8.5中有以下代碼,對我來說它看起來有效。爲什麼這會給出錯誤?Groovy:在枚舉中委託屬性

public enum Test 
{ 
    ONE("meep"), TWO("jeep"), THREE("sheep"); 

    Test(String n) 
    { 
     this.n = n; 
    } 

    @Delegate String n; 
} 

println Test.ONE[1] 
println Test.TWO[0] 

編輯1: 我有一些列舉的對象,所以我想將它們放在一個枚舉。枚舉的每個值代表這些對象的一個​​實例,爲什麼不把它們存儲在那裏呢?現在,groovy使我能夠做到,比如Test.One.digits而不是Test.One.n.digits,這更便於使用。

當我嘗試在eclipse中運行它時,我得到了Exception in thread "main" java.lang.NoClassDefFoundError,我解釋爲該類未被正確編譯。雖然我沒有編譯器消息,但我正在處理它。

編輯2:

我拿到劇本到這裏工作雖然... http://gppconsole.appspot.com/script/34001 所以我想結案和問題是不是代碼。

回答

1

你會得到什麼錯誤?

public enum Test 
{ 
    ONE(1), TWO(2), THREE(3); 

    Test(Integer n) 
    { 
     this.n = n; 
    } 

    @Delegate Integer n; 
} 

println Test.ONE.n 

作品在Groovy 1.8.6 ...雖然我不知道添加@Delegate來枚舉是做(我需要想一想更多)一件好事......

你想達到什麼目的?

+0

有趣的是,Eclipse甚至沒有顯示錯誤,所以我還沒有弄清楚實際的錯誤信息是什麼。紅色圖標顯示在文件圖標上,但是當我嘗試運行它時,它說它會給出「java.lang.NoClassDefFoundError」,我認爲我的類沒有正確構建。我會嘗試使用更新版本的Groovy – Nubsis 2012-04-02 11:18:44