枚举类
枚举对应英文(enumeration,简写 enum),枚举是一组常量的集合。枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
下面以Season枚举类为例:
public enum Season {
SPRING("春天","万物复苏"),
SUMMER("夏天","烈日炎炎"),
AUTUMN("秋天","硕果累累"),
WINTER("冬天","银装素裹");
private String name;
private String description;
private Season(String name,String description){
this.name = name;
this.description = description;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", description='" + description + '\'' +
'}';
}
}
enum实现枚举注意事项:
- 当我们使用enum 关键字开发一个枚举类时,默认会继承Enum类,而且是一个final 类,所以就不能继承其它类,因为java是单继承,但是和普通类一样,可以实现接口
- 传统的 public static final Season SPRING = new Season(“春天”,“万物复苏”); 简化成 SPRING(“春天”,“万物复苏”), 这里必须知道,它调用的是哪个构造器
- 如果使用无参构造器 创建 枚举对象,则实参列表和小括号都可以省略
- 当有多个枚举对象时,使用,间隔,最后有一个分号结尾
- 枚举对象必须放在枚举类的行首.
enum常用方法:
- toString:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息
- name: 返回当前对象名 (常量名),子类中不能重写
- ordinal: 返回当前对象的位置号,默认从0开始
- values:返回当前枚举类中所有的常量
- valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!
- compareTo:比较两个枚举常量,比较的就是编号!
enum常用方法示例:
public static void main(String[] args) {
Season autumn = Season.AUTUMN;
//输出枚举对象的名字
System.out.println(autumn.name()); //AUTUMN
//ordinal()输出的是该枚举对象的次序/编号,从0开始编号
System.out.println(autumn.ordinal()); //2
//返回含有定义的所有所有枚举对象
Season[] values = Season.values();
for (Season season : values) {
System.out.println(season);
}
//将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!
Season autumn1 = Season.valueOf("AUTUMN");
System.out.println(autumn1);
//compareTo:比较两个枚举常量,比较的就是编号
System.out.println(Season.AUTUMN.compareTo(Season.SUMMER)); //1
}