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);

浙公网安备 33010602011771号