enums hilfe
-
Hallo
ich versuch die enums in java richtig einzusetzen.
ich habe jetzt ein enumpublic enum Wichtigkeiten { UNWICHTIG ( 0 ), NORMAL ( 1 ), WICHTIG ( 2 ), SEHRWICHTIG ( 3 ); private int dieWichtigkeit; Wichtigkeiten(int w) { dieWichtigkeit = w; } public String toString() { return ""; } }
jetzt will ich das enum durch switch&case abfragen. dafür habe ich ein Feld
public Wichtigkeiten dieWichtigkeit;
wieso kann ich das jetzt nicht switchen ?
switch ( theData.dieWichtigkeit ) { // hier gibts ein Fehler: case Datas.Wichtigkeiten.UNWICHTIG: break; }
The enum constant Datas.Wichtigkeiten.UNWICHTIG reference cannot be qualified in a case label
laut "Java ist auch eine Insel" müsste es doch gehen.
enum Länder { deutschland( Locale.GERMANY ), england( Locale.UK ), china( Locale.CHINA ); private Locale land; Länder( Locale land ) { this.land = land; } }
Länder meinLand = Länder.deutschland; switch ( meinLand ) { case Länder.deutschland: System.out.println( "Aha. Ein Krauti" ); }
ich benutzt Eclipse 3.1M6.
-
Den Namen des Enum-Typs darfst du nicht mehr dazu schreiben. Dies verhindert zur Compilierzeit schon, dass du Konstanten aus verschiedenen Enum-Typen mischen kannst.
-
ahsoo super danke
aber wieso steht dann da:case Länder.deutschland: System.out.println( "Aha. Ein Krauti" );
?
wurde das geändert oder wie
-
Ich halte das für einen Fehler im Buch. Javac mag es jedenfalls auch nicht. Ich hab aber auch gar nicht an einen Fehler in Eclipse geglaubt, weil die Meldung ja wirklich eindeutig ist.
Javac meint auch:
Test.java:20: an enum switch case label must be the unqualified name of an enumeration constant