枚举
概念:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式。
            
            
              java
              
              
            
          
          public static  final int RED = 1;
 public static  final int GREEN = 2;
 public static  final int BLACK = 3;枚举的使用
            
            
              java
              
              
            
          
          public enum enumTest {
    RED(0,"RED"),GREEN(1,"GREEN"),BLUE(2,"BLUE"),
    BLACK(3,"BLACK"),WHITE(4,"WHITE");
    public int ordinal;
    public String color;
    enumTest(int ordinal, String color) {
        this.ordinal = ordinal;
        this.color = color;
    }
    public static void main1(String[] args) {
        enumTest enumTest=RED;
        switch (enumTest){
            case RED -> {
                System.out.println("RED");
                break;
            }
            case BLACK -> {
                System.out.println("BLACK");
                break;
            }
            case BLUE -> {
                System.out.println("BLUE");
                break;
            }
            case WHITE -> {
                System.out.println("WHITE");
                break;
            }
            default -> {
                System.out.println("无法匹配");
                break;
            }
        }
    }
}枚举的常用方法
|-------------|------------------|
| values()    | 以数组形式返回枚举类型的所有成员 |
| ordinal()   | 获取枚举成员的索引位置      |
| valueOf()   | 将普通字符串转换为枚举实例    |
| compareTo() | 比较两个枚举成员在定义时的顺序  |
            
            
              java
              
              
            
          
          public static void main(String[] args) {
        TestEnum[] testEnums = TestEnum.values();
        for (int i = 0; i < testEnums.length; i++) {
            System.out.println(testEnums[i] +" " +testEnums[i].ordinal());
        }
        TestEnum testEnum = TestEnum.valueOf("WHITE");
        System.out.println(testEnum);
        System.out.println(WHITE.compareTo(BLACK));
    }枚举通过反射来拿到实例的对象
            
            
              java
              
              
            
          
          public class Test1 {
    public static void main(String[] args) {
        try {
            Class<?> c1 = Class.forName("enumdemo.enumTest");
            Constructor<?> constructor = c1.getDeclaredConstructor
                    (String.class, int.class, int.class, String.class);
            constructor.setAccessible(true);
            enumTest enumTest = (enumTest) constructor.newInstance(9, "YELLOW");
            System.out.println(enumTest);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (NoSuchMethodException e) {
            throw new RuntimeException(e);
        } catch (InvocationTargetException e) {
            throw new RuntimeException(e);
        } catch (InstantiationException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }
}注:枚举本身就是一个类,其构造方法默认为私有的,枚举可以避免反射和序列化问题。
希望能对大家有所帮助!!!
