Inhaltsverzeichnis
Die Anleitung zu Java Enum
View more Tutorials:
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.
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"; } }
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"); } } }
Wie die primitiven Daten (int,float,..) kann Enum wie eine Parameter in der Anweisung switch benutzt werden
Sehen Sie ein Beispiel:
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); } } }
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

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

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

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(); }