1 定義枚舉類要用關鍵字enum 2 全部枚舉類都是Enum的子類 3 枚舉類的第一行上必須是枚舉項, 最後一個枚舉項後的分號是能夠省略的,可是若是枚舉類有其餘的東西, 這個分號就不能省略。 建議不要省略 4 枚舉類能夠有構造器, 但必須是private, 它默認的也是private 5 枚舉類也能夠有抽象方法,可是枚舉項必須重寫該方法 6 枚舉在switch語句中的使用
public enum Direction { FRONT,BEHIND,LEFT,RIGHT; }
public enum Direction2 { FRONT("前"), BEHIND("後"), LEFT("左"), RIGHT("右"); private String name; Direction2(String name) { this.name = name; } public String getName() { return name; } }
public enum Direction3 { FRONT("前") { @Override public void show() { System.out.println("前"); } }, BEHIND("後") { @Override public void show() { System.out.println("後"); } }, LEFT("左") { @Override public void show() { System.out.println("左"); } }, RIGHT("右") { @Override public void show() { System.out.println("右"); } }; private String name; private Direction3(String name) { this.name = name; } public String getName() { return name; } public abstract void show(); }
public static void main(String[] args) { Direction d = Direction.FRONT; // FRONT System.out.println(d); //public String toString();返回枚舉常量的名稱,它包含在聲明中 System.out.println("--------------"); Direction2 d2 = Direction2.FRONT; // FRONT System.out.println(d2); // 前 System.out.println(d2.getName()); System.out.println("-------------------"); Direction3 d3 = Direction3.FRONT; // FRONT System.out.println(d3); // 前 System.out.println(d3.getName()); // 前 d3.show(); System.out.println("=-=-----------------"); Direction3 dd = Direction3.LEFT; switch (dd) { case FRONT: System.out.println("前"); break; case BEHIND: System.out.println("後"); break; case LEFT: System.out.println("左"); break; case RIGHT: System.out.println("右"); break; } }
=============================================================================================ide
public enum Direction2 { FRONT("前"), BEHIND("後"), LEFT("左"), RIGHT("右"); private String name; Direction2(String name) { this.name = name; } public String getName() { return name; } }
public static void main(String[] args) { //public final int compareTo(E o)比較此枚舉與指定對象的順序。 Direction2 d21 = Direction2.FRONT; Direction2 d22 = Direction2.BEHIND; Direction2 d23 = Direction2.LEFT; Direction2 d24 = Direction2.RIGHT; // 0 System.out.println(d21.compareTo(d21)); // -3 System.out.println(d21.compareTo(d24)); // 3 System.out.println(d24.compareTo(d21)); System.out.println("--------------"); //public final String name()返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明 // FRONT System.out.println(d21.name()); // BEHIND System.out.println(d22.name()); // LEFT System.out.println(d23.name()); // RIGHT System.out.println(d24.name()); System.out.println("-------------"); //public final int ordinal()返回枚舉常量的序數 // 0 System.out.println(d21.ordinal()); // 1 System.out.println(d22.ordinal()); // 2 System.out.println(d23.ordinal()); // 3 System.out.println(d24.ordinal()); System.out.println("-------------------"); //public String toString()返回枚舉常量的名稱,它包含在聲明中 //能夠重寫此方法 // FRONT System.out.println(d21.toString()); // BEHIND System.out.println(d22.toString()); // LEFT System.out.println(d23.toString()); // RIGHT System.out.println(d24.toString()); System.out.println("------------"); //public static <T extends Enum<T>> T valueOf(Class<T> enumType, //String name)返回帶指定名稱的指定枚舉類型的枚舉常量 Direction2 dd = Enum.valueOf(Direction2.class, "FRONT"); // 前 System.out.println(dd.getName()); System.out.println("-------------"); //values()此方法雖然在JDK文檔中查找不到,單每一個枚舉類都具備該方法 //它遍歷枚舉類的全部枚舉值很是方便 Direction2[] direction2s = Direction2.values(); for (Direction2 d2 : direction2s) { /*FRONT 前 BEHIND 後 LEFT 左 RIGHT 右*/ System.out.println(d2); System.out.println(d2.getName()); } }