枚举天生不可变, 因此所有的域都是final的.有时候需要将不同的行为与每个常量关联起来, 可以在枚举中定义抽象方法, 这样添加新的常量的时候就必须提供这个方法.如果多个枚举常量同时共享相同的行为, 则考虑策略枚举...(无法打印, 无法遍历.)java.util提供了EnumSet类来有效地表示从单个枚举类型中提取的多个值的多个集合.第37条 用EnumMap代替序数索引有时候, 你可能会见到用ordinal方法来索引数组的代码...只要实现这个接口就可以.虽然无法编写可扩展的枚举类型, 却可以通过编写接口以及实现该接口的基础枚举类型, 对它进行模拟....没有加@Override注解的时候, 编译器不会报错, 而是把它当做一次方法重载.加上@Override注解, 编译器会提示, 可以及时发现错误.应该在你想要覆盖超类声明的每个方法声明中使用@Override...注解.如果不写IDE会有警告.如果是实现抽象方法, 不写@Override注解IDE不会警告, 但是这样做没什么坏处.第41条 用标记接口定义类型标记接口(marker interface)是没有包含方法声明的接口