public class Test { public static void main(String[] args) { Week w = Week.FRIDAY; System.out.println(w.getWeekNum()); } }
输出:
❝
5
❞
枚举类中还可以有
抽象方法
。
public enum Week { SUNDAY(){ @Override public void getWeekNum() { System.out.println(7); } }, MONDAY() { @Override public void getWeekNum() { System.out.println("星期一"); } },
TUESDAY(){ @Override public void getWeekNum() { System.out.println("礼拜二"); } }, WEDNESDAY(){ @Override public void getWeekNum() { System.out.println("周三"); } };
public abstract void getWeekNum(); }
public class Test { public static void main(String[] args) { Week w = Week.TUESDAY; w.getWeekNum(); } }
输出:
❝
礼拜二
❞
values()、valueOf(String name) 方法
每个枚举类都有两个 static 方法:
static Direction[] values():返回本类所有枚举常量;
static Direction valueOf(String name):通过枚举常量的名字返回Direction常量,注意,这个方法与Enum类中的valueOf()方法的参数个数不同。
public class Test { public static void main(String[] args) { for (Week w : Week.values()) { System.out.println(w); } System.out.println("星期天:" + Week.valueOf("SUNDAY")); } }
public class Test { public static void main(String[] args) { Week w = Week.MONDAY; switch (w) { case MONDAY: System.out.println("周一"); break; case TUESDAY: System.out.println("周二"); break; } } }
❝
周一
❞
「实现接口,消除 if/else」
我们创建的枚举类默认是被
final
修饰,并且默认继承了
Enum
类。因此不能再继承其他的类。但是可以去实现接口。