1.简单枚举
Color.java
package zh.myenum.demo; public enum Color { // 第一行只能是枚举项,每一个枚举项都是一个静态实例对象 RED,GREEN,BLUE,ORANG; // 枚举的构造方法只能是私有 /*public Color(){ // 报错:Illegal modifier for the enum constructor; only private is permitted. }*/ }
ColorDemo.java
package zh.myenum.demo; public class ColorDemo { public static void main(String[] args) { Color green = Color.GREEN; System.out.println(green);//GREEN // 枚举项的名称 System.out.println(green.name());//GREEN // 枚举项的索引 System.out.println(green.ordinal());// 1 } }
2.复杂枚举
Color.java
package zh.myenum.demo; public enum Color { // 第一行只能是枚举项,每一个枚举项都是一个静态实例对象 RED("red"){ @Override public void fun() { System.out.println("i am red"); } },GREEN("green"){ @Override public void fun() { System.out.println("i am green"); } },BLUE("blue"){ @Override public void fun() { System.out.println("i am blue"); } },ORANGE("orange"){ @Override public void fun() { System.out.println("i am orange"); } }; // 私有属性 private String name; // 如果只有 私有带参构造方法,那么第一行的枚举项后要传参 private Color(String name){ this.name = name; } public String getName() { return name; } // 如果内部有 抽象方法,那么第一行的枚举项要重写抽象方法 public abstract void fun(); }
ColorDemo.java
package zh.myenum.demo; public class ColorDemo { public static void main(String[] args) { Color green = Color.GREEN; System.out.println(green);//GREEN // 枚举项的名称 System.out.println(green.name());//GREEN // 获得属性 System.out.println(green.getName());// green // 枚举项的索引 System.out.println(green.ordinal());// 1 // 调用fun() green.fun();// i am green // 根据名称获得枚举项 Color orange = Color.valueOf("ORANGE"); System.out.println(orange.ordinal());// 3 System.out.println(orange.getName());// orange orange.fun();// i am orange // 获得枚举项数组 Color[] colors = Color.values(); for(Color color : colors){ System.out.println(color); } // RED // GREEN // BLUE // ORANGE } }