• 枚举其实就是特殊的常量类,构造方法强制为 private,所以可以省略该修饰符;
    • 《阿里巴巴 Java 开发手册》建议枚举类名带上 Enum 尾缀;

      1. public enum Size {
      2. SMALL("S"), MEDIUM("M"), LARGE("L");
      3. private final String abbreviation;
      4. // 可以省略 private 修饰符
      5. Size(String abbreviation) {
      6. this.abbreviation = abbreviation;
      7. }
      8. public String getAbbreviation() {
      9. return abbreviation;
      10. }
      11. }
    • 枚举类都继承自 Enum 类,因此都是 Enum 类的子类。因此,所有枚举类都实现了 ComparableSerializable 接口;

      public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable {
               ...
      }
      
    • Enum 类还提供了 valueOf()values()ordinal()name()toString() 等实用方法。 ```java Size medium = Size.valueOf(“MEDIUM”);

    Size[] values = Size.values();

    Size.SMALL.ordinal(); // 0 Size.MEDIUM.ordinal(); // 1

    Size.SMALL.name(); // SMALL Size.SMALL.toString(); // SMALL `` 注意ordinal()返回的 index 从 0 开始,name()toString()` 等效。