2012-04-02 4 views
1

У меня есть следующий код в Groovy 1.8.5 и для меня он выглядит действительным. Почему это дает ошибку?Groovy: делегировать недвижимость в enum

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] 

Edit 1: У меня есть ряд перечисленных объектов, поэтому я хочу, чтобы поместить их в перечислении. Каждое значение перечисления представляет собой экземпляр этих объектов, поэтому почему бы не сохранить их там? Теперь, groovy позволяет мне сделать, скажем Test.One.digits вместо Test.One.n.digits, который удобнее.

Когда я пытаюсь запустить его в eclipse, я получаю Exception in thread "main" java.lang.NoClassDefFoundError, который я интерпретирую как класс, который не скомпилирован должным образом. У меня нет сообщения компилятора в то время, хотя ... Я над этим работаю.

Edit 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

Смежные вопросы