enums hilfe



  • Hallo
    ich versuch die enums in java richtig einzusetzen.
    ich habe jetzt ein enum

    public 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


Anmelden zum Antworten