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