2012-04-02 4 views
1

Ich habe den folgenden Code in Groovy 1.8.5 und für mich sieht es gültig aus. Warum gibt das einen Fehler?Groovy: Delegate Eigenschaft in 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: ich eine Reihe von aufgezählten Objekte haben, so möchte ich sie in einem Enum setzen. Jeder Wert der Enumeration stellt eine Instanz dieser Objekte dar, also warum sie nicht dort speichern? Nun, groovy ermöglicht mir zu tun, sagen Test.One.digits statt Test.One.n.digits, die handier ist.

Wenn ich versuche, es in Eclipse auszuführen, bekomme ich Exception in thread "main" java.lang.NoClassDefFoundError die ich interpretiere, wie die Klasse nicht ordnungsgemäß kompiliert wird. Ich habe die Compiler-Nachricht zu der Zeit aber nicht ... Ich arbeite daran.

Edit 2: obwohl

bekam ich das Drehbuch, hier zu arbeiten ... http://gppconsole.appspot.com/script/34001 Also ich denke, Fall geschlossen und das Problem ist nicht der Code.

Antwort

1

Welchen Fehler bekommen Sie?

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

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

    @Delegate Integer n; 
} 

println Test.ONE.n 

Werke in Groovy 1.8.6 ... Obwohl ich nicht sicher bin, dass zu einem Enum eines @Delegate Zugabe ist eine gute Sache zu tun (ich darüber mehr denken muß) ...

Was versuchen Sie zu erreichen?

+0

Die lustige Sache ist, dass Eclipse nicht einmal einen Fehler zeigt, so habe ich nicht herausgefunden, was die eigentliche Fehlermeldung ist. Das rote Symbol wird auf dem Dateisymbol angezeigt, aber wenn ich versuche, es auszuführen, sagt es, dass es "java.lang.NoClassDefFoundError" gibt, was ich als meine Klasse interpretiere, die nicht korrekt erstellt wird. Ich werde es mit einer neueren Version von Groovy versuchen – Nubsis

Verwandte Themen