Java枚举
简单使用,没有枚举之前,可以在类中定义final变量,通过类来引用。有了枚举后,可以定义枚举类。
public enum Day {
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
}
public static void main(String[] args) {
Day monday = Day.MONDAY;
Day friday = Day.FRIDAY;
//枚举类默认有如下方法
/**
* 对比方法
*/
System.out.println(monday.compareTo(friday));
/**
* 相同比较
*/
System.out.println(monday.equals(friday));
/**
* 获取枚举类的class对象
*/
System.out.println(monday.getDeclaringClass());
/**
* 枚举常量名称
*/
System.out.println(monday.name());
/**
* 枚举常量的序数
*/
System.out.println(friday.ordinal());
/**
* 枚举常量的名称
*/
System.out.println(monday.toString());
/**
* 返回枚举常量
*/
Day day = Day.valueOf("MONDAY");
}
默认的values()和valueOf方法,values方法用于获取枚举所有值,valueOf方法获取单一枚举值
public static void main(String[] args) {
Day[] values = Day.values();
Arrays.stream(values).forEach(System.out::println);
Day monday = Day.valueOf("monday");
System.out.println(monday);
}
带参数枚举
上面是简单枚举的用法,枚举中可以设置参数,参数设置以后,枚举的构造函数必须要进行同步修改。参数也可以通过get方法进行获取,还可以重写toString方法
public enum Day {
MONDAY("周一"), TUESDAY("周二"), WEDNESDAY("周三"), THURSDAY("周四"), FRIDAY("周五"), SATURDAY("周六"), SUNDAY("周日");
private String desc;
Day(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Day{" +
"desc='" + desc + '\'' +
'}';
}
}
public static void main(String[] args) {
Day[] values = Day.values();
Arrays.stream(values).forEach(System.out::println);
Day monday = Day.valueOf("MONDAY");
System.out.println(monday.getDesc());
}