枚举的遍历:
enum Suit { CLUB, DIAMOND, HEART, SPADE }Collection
suitTypes = Arrays.asList(Suit.values());for (Suit suit : suitTypes) { ...}
0. 枚举类的静态成员
比如一个枚举类 Month,通过 Month.values() 便可遍历其成员:
for (Month m : Month.values()) { ....}
1. 将 enum 视为一种特殊的类
也即可在其中添加成员方法,甚至 main() 方法。一般来说,我们希望每个枚举类型能够返回对自身的描述,而不仅仅是默认的 toString() 实现(只能返回枚举实例的名字)。为此,可以提供一个构造器,专门负责处理这个额外的描述信息。
public enum OzWitch{ WEST("West"), NORTH("North"), SOUTH("South"), EAST("East"); // 这些枚举实例的写法,括号内有字符串,相当于对 OzWitch 构造函数的一种调用; // 此时必须给出以字符串为参数的构造函数;如下 private String desc; private OzWitch(String desc) { this.desc = desc; } public String getDesc() { return desc; } public static void main(String[] args) { for (OzWitch witch: OzWitch.values()){ System.out.println(witch.getDesc()); } }}
2. 枚举中的抽象函数
public enum HourlyPayGrade { APPRENTICE { public double rate() { return 1.0; } }, LEUTENANT_JOURNEYMAN { public double rate() { return 1.2; } }, JOURNEYMAN { public double rate() { return 1.5; } }, MASTER { public double rate () { return 2.0; } }; public abstract double rate();}