化身天使的博客

9.java 泛型枚举

泛型

枚举

  • 枚举是单例模式, 不能通过new创建,构造函数是私有的

枚举常量

  • 关键字 enum
  • 枚举常量必须写在最前,常量之间逗号隔开,结尾分号
    public enum ColorEnum{
        RED,GREEN,BLUE;
    }

    class Test {
        public static void main(String[] args) {
            ColorEnum color = ColorEnum.GREEN;   // 创建枚举实例
            log.debug("{} {}",color,color.ordinal()) //  GREEN 1
        }
    }
  • 枚举常量会有一个隐式的索引,按定义顺序从0开始编号
  • 通过.ordinal()方法获取索引, RED:0,YEllOW:1
  • 每个枚举常量其实也是一个方法,上面的枚举可写成:
      public enum ColorEnum{
          RED{},GREEN{},BLUE{};
      }
    
    可在方法体内写具体的操作

枚举常量+参数

  • 枚举常量带参数
  • 定义属性作为参数
  • 创建获取参数的方法
  • 构造函数中传入参数,有几个参数就传入几个 构造函数是私有的

一个参数

public enum ColorEnum {
    RED("255"),GREEN("23"),BLUE("140");

    private String value;
    public String getValue() {
        return value;
    }

    private ColorEnum(String value) {
        this.value = value;
    }
}

@Slf4j
class Test {
    public static void main(String[] args) {
        ColorEnum green = ColorEnum.GREEN;
        log.info("colorEnum:{}.ordinal:{}.value:{}.",green,green.ordinal(),green.name());
        // GREEN.1.GREEN
    }
}

  • 每个枚举常量其实也是一个方法,上面的枚举可写成:
      RED("255"){},GREEN("23"){},BLUE("140"){};
    

多个参数

public enum ColorEnum {
    RED("red",255,"r"),GREEN("green",23,"g"),BLUE("blue",140,"b");
    private int code;
    private String value;
    private String jiancheng;

    public String getJiancheng() {
        return jiancheng;
    }
    public int getCode() {
        return code;
    }
    public String getValue() {
        return value;
    }

    private ColorEnum(String value,int code,String name) {
        this.value = value;
        this.code = code;
        this.jiancheng = name;
    }
}


@Slf4j
class Test {
    public static void main(String[] args) {
        ColorEnum green = ColorEnum.GREEN;
            System.out.println(green);
            System.out.println(green.getValue());
            System.out.println(green.getCode());
            System.out.println(green.getJiancheng());
            System.out.println("--------------------------");
    }
}

默认方法和属性

  • values() 获取所有枚举常量

    ColorEnum[] colorEnums = ColorEnum.values();

  • name() 获取枚举常量名字(字符串类型)
    ColorEnum green =ColorEnum.valueOf("GREEN");
    System.out.println(green);    
    
  • toString() 同上
  • valueOf("") 传入字符串,获取枚举常量

    ColorEnum green =ColorEnum.valueOf("GREEN");

  • ordinal() 获取序号
  • compareTo 两个枚举序号相减

    ColorEnum.GREEN.compareTo(ColorEnum.RED);

posted @ 2024-01-25 19:24  化身天使  阅读(110)  评论(0)    收藏  举报