枚举是一种特殊的类,这个类被final修饰,同时继承(extends)了java.lang.Enum类。故枚举不能继承和被继承。
    枚举定义的成员变量都是由public static final修饰的、该枚举类型的常量(枚举对象),并默认调用无参构造器(没有括号)。

    1. public enum Gender {
    2. MALE, FEMALE;
    3. // 相当于public static final MALE = new Gender();
    4. }

    枚举的构造器默认由private修饰(也可以改为(default)),故不能在类外实例化枚举对象——因此与对象有关的范型与其无关。构造器可以被重载。
    枚举对象默认具有valueOf()方法(通过一个字符串可以返回枚举对象,这个字符串参数就是枚举对象的名字)和values(String str)方法(可以返回这个枚举类型的所有对象,返回类型是数组)。
    枚举对象的toString()方法会默认返回变量的变量名。
    枚举可以实现一个接口,也可以实现自己的抽象方法(自己的抽象方法也只能被自己实现)。可以在枚举中统一实现,也可以在对象中单独实现。

    1. public enum Gender implements Action{
    2. MALE(){
    3. @Override
    4. public void run() {
    5. System.out.println("MALE对象中,单独实现接口中的抽象方法");
    6. }
    7. }, FEMALE(){
    8. @Override
    9. public void run() {
    10. System.out.println("FEMALE对象中,单独实现接口中的抽象方法");
    11. }
    12. };
    13. @Override
    14. public void run() {
    15. System.out.println("枚举中统一实现接口中的抽象方法");
    16. }
    17. }
    18. interface Action{
    19. void run();
    20. }

    在项目中,只要一个类型的对象个数和名称能固定下来的,就可以考虑使用枚举类型来表示。枚举常用于switch语句、异常类、项目常量中。