codestory

Die Anleitung zu Java Enum

  1. was ist Java Enum?
  2. Den Operator == benutzen um die Elemente vom enum zu vergleichen
  3. Enum kan wie ein Parameter in dem Befehk switch benutzt werden
  4. Die Elementen vom Enum browsen
  5. Enum kann den Constructor und die Methode haben 
  6. Die Methode überschreiben im Enum
  7. Die abstrakte Methode im Enum

1. was ist Java Enum?

enum im Java ist ein Key wort, ein Funktion für die Vertretung einer bestimmten Zahl, z.B: Tagen in der Woche, Planet im Sonnensystem, v..v
enum im Java wird im JDK 1.5 vorgestellt und es ist eine der neuen Funktion von J2SE 5 mit dem autoboxing und unboxing, Generics, varargs und static import.
Jetzt sollen wir schauen, was Java vor der Entstehung von enum im einige Fall macht
WeekDayConstants.java
package org.o7planning.tutorial.beforej5;

// This class defines the constants are the days of the week.
public class WeekDayConstants {
  public static final int MONDAY = 2;
  public static final int TUESDAY = 3;
  public static final int WEDNESDAY = 4;
  public static final int THURSDAY = 5;
  public static final int FRIDAY = 6;
  public static final int SATURDAY = 7;
  public static final int SUNDAY = 1;
}
Ein Class mit einer Methode stellt die Arbeit mit der angemessenen Tag in Woche (wie die Zeitplan)
Timetable.java
package org.o7planning.tutorial.beforej5;

public class Timetable {
  // Returns name of Job will do
  public static String getJob(int dayInWeek) {
      if (dayInWeek == WeekDayConstants.SATURDAY
              || dayInWeek == WeekDayConstants.SUNDAY) {
          return "Nothing";
      }
      return "Coding";
  }
}
Es ist einfach zu sehen, die Kodierung wie oben ist nicht sicher. Wie : Unglücklichweise typen Sie die Wert für Wochentag duplikate. Oder rufen Sie Timetable.getJob(int) , aber Sie geben die nicht wie vorher definierten Wert ein
  • Nicht sicher: Wenn Sie es vielleicht nicht sicher finden, rufen Sie die Methode getJob(int) und geben Sie irgendwelche Int Wert ein.
  • Kein Wert im Drucken: Wenn Sie die Tagen drucken möchten, werden die Zahl statt des sinvolle Wort wie MONDAY gezeigt
Hier ist die Kodierung für die Behandlung im Java5:
WeekDay.java
package org.o7planning.tutorial.javaenum;

public enum WeekDay {
   MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
Timetable.java
package org.o7planning.tutorial.javaenum;

public class Timetable {
  public static String getJob(WeekDay weekDay) {
      if (weekDay == WeekDay.SATURDAY || weekDay == WeekDay.SUNDAY) {
          return "Nothing";
      }
      return "Coding";
  }
}

2. Den Operator == benutzen um die Elemente vom enum zu vergleichen

Enum ist ein Referenzobjekt wie class, interface aber sie kann die Vergleich == benutzen
Sehen Sie bitte wie die Konferenzobjekt vergleichen
// To compare the reference object, generally used method equals (..)
Object obj1 = .... ;

// Comparing object with null, can use the == operator
if(obj1 == null)  {
 
}

Object obj2 = ....;
// Not null
if (obj1 != null)   {
   // Comparing two objects.
   if(obj1.equals(obj2))   {
       
   }
}
Mit Enum können Sie die operator == für die Vergleich benutzen
CompareEnumDemo.java
package org.o7planning.tutorial.javaenum;

public class CompareEnumDemo {
  public static void main(String[] args) {
      WeekDay today = WeekDay.SUNDAY;
      // Use the == operator to compare two elements of Enum
      if (today == WeekDay.SUNDAY) {
          System.out.println("Today is Sunday");
      }
  }
}

3. Enum kan wie ein Parameter in dem Befehk switch benutzt werden

Wie die primitiven Daten (int,float,..) kann Enum wie eine Parameter in der Anweisung switch benutzt werden
Sehen Sie ein Beispiel:
SwitchDemo.java
package org.o7planning.tutorial.javaenum;

public class SwitchDemo {
   public static void main(String[] args) {
       WeekDay day = WeekDay.THURSDAY;
       switch (day) {
       case MONDAY:
           System.out.println("Working day");
           break;
       case SATURDAY:
       case SUNDAY:
           System.out.println("Holiday");
           break;
       default:
           System.out.println(day);
       }
   }
}

4. Die Elementen vom Enum browsen

Wir können alle Elemente von Enum durch die Methode values() durchsuchen. Sehen Sie ein Beispiel
ValuesDemo.java
package org.o7planning.tutorial.javaenum;

public class ValuesDemo {
   public static void main(String[] args) { 
       // Get all the elements of the Enum.
       WeekDay[] allDays = WeekDay.values();
       for (WeekDay day : allDays) {
           System.out.println("Day: " + day);
       }
   }
}
Ergebnis des Beispiel
Day: MONDAY
Day: TUESDAY
Day: WEDNESDAY
Day: THURSDAY
Day: FRIDAY
Day: SATURDAY
Day: SUNDAY

5. Enum kann den Constructor und die Methode haben 

Ein Enum kann Constructor und MEthode haben. Constructor erstellt die Instance innerhalb enum, kann nicht außer enum rufen. Sehen Sie ein Beispiel
Gender.java
package org.o7planning.tutorial.javaenum;

public enum Gender { 
   // Initialize the elements from Constructor.
   // The element is always final, static
   MALE("M", "Male"), FEMALE("F", "Female");
   private String code;
   private String text;

   // Constructor of Enum internal use only
   // Modifier of constructor is private
   // If you do not declare private, java alway understand is private.    
   private Gender(String code, String text) {
       this.code = code;
       this.text = text;
   } 
   // Static method return Gender by code.
   public static Gender getGenderByCode(String code) {
       for (Gender gender : Gender.values()) {
           if (gender.code.equals(code)) {
               return gender;
           }
       }
       return null;
   }
   public String getCode() {
       return code;
   }
   public void setCode(String code) {
       this.code = code;
   } 
   public String getText() {
       return text;
   }
   public void setText(String text) {
       this.text = text;
   }
}
GenderDemo.java
package org.o7planning.tutorial.javaenum;

public class GenderDemo {
  public static void main(String[] args) {
      Gender marryGender = Gender.FEMALE;
      System.out.println("Code: " + marryGender.getCode());
      System.out.println("Text: " + marryGender.getText());

      // Gender[].
      for (Gender gender : Gender.values()) {
          System.out.println(gender.getText());
      } 
      String code ="M";
      Gender gender= Gender.getGenderByCode(code);
      System.out.println("Gender by code: "+ gender);
  }
}
Ergebnis des Beispiel
Code: F
Text: Female
Male
Female
Gender by code: MALE

6. Die Methode überschreiben im Enum

Sie können die method toString() - Inheritance aus dem class Object überschreiben.
Currency.java
package org.o7planning.tutorial.javaenum;

public enum Currency {
  VND, USD, EURO ;

  @Override
  public String toString() {
      if (this == VND) {
          return "Dong";
      } else if (this == USD) {
          return "Dola";
      }
      return super.toString();
  }
  public static void main(String[] args) {
      Currency money = Currency.USD;
      System.out.println("Money " + money);
      System.out.println("Money " + money.toString());
      System.out.println("VND " + Currency.VND);
      System.out.println("EURO " + Currency.EURO);
  }
}
Ergebnis des Beispiel
Money Dola
Money Dola
VND Dong
EURO EURO

7. Die abstrakte Methode im Enum

Color.java
package org.o7planning.tutorial.javaenum;

public enum Color {
  RED("red") {
      @Override
      public String getHexCode() {
          return "#ff0000";
      }
  },
  GREEN("green") {
      @Override
      public String getHexCode() {
          return "#00ff00";
      }
  },
  BLUE("blue") {
      @Override
      public String getHexCode() {
          return "#0000ff";
      }
  };
  private String name;
  Color(String name) {
      this.name = name;
  }
  public String getName() {
      return name;
  } 
  public abstract String getHexCode();
}

Java Grundlagen

Show More