java枚举
package frank; import java.lang.*; public class App { public static void main(String[] args) { App a = new App(); a.println(AppEnum.SPRING); System.out.println(AppEnum.SUMMER.ordinal()); a.println(AppEnum.valueOf(AppEnum.class,"SUMMER")); for(AppEnum item : AppEnum.values())//遍历枚举 { System.out.println(item); } AppEnum ae = AppEnum.valueOf(AppEnum.class,"SPRING"); ae.setName("男"); AppEnum at = AppEnum.SPRING;//自动调用相应常量的构造方法 System.out.println(AppEnum.SPRING.getName()); AppEnum.SPRING.get();//调用枚举里面对应实例的方法 } public void println(AppEnum ae) { switch(ae) { case SPRING: { System.out.println("春天"); } break; case SUMMER: { System.out.println("夏天"); } break; default: { System.out.println("火星来的!"); } break; } } } /** 枚举的练习,枚举是特殊的类,如果用public修饰那么枚举名必须跟类名一样。 枚举里面的实例默认都是public static final修饰的,自己不能添加。 */ enum AppEnum { SPRING("男")//定义一个构造方法 { public void get() { System.out.println("娜娜"); } }, SUMMER("女") { public void get() { System.out.println("娜娜2"); } }, FALL("人妖") { public void get() { System.out.println("娜娜3"); } }, WINTER("未知") { public void get() { System.out.println("娜娜4"); } }; private String name;//枚举里面定义一个变量 public void setName(String name)//定义一个方法 { switch(this) { case SPRING: if(name.equals("男")) { this.name = name; } else { System.out.println("参数填写错误!"); } break; case SUMMER: if(name.equals("女")) { this.name = name; } else { System.out.println("参数填写错误!"); } break; default: break; } } public String getName() { return this.name; } private AppEnum(String name)//只能指定为private { this.name = name; } public abstract void get();//定义一个抽象方法,然后让每个常量去实现 }
java里面枚举可以继承一个或多个接口,里面可以定义字段、方法、构造方法(只能是private的,默认也是私有的)、也可以定义抽象方法。