什么是枚举?
枚举对应英文(enumeration简写enum)
枚举是一组常量的集合
枚举是一种特殊的类,里面只包含一组有限的特定对象。
枚举实现的两种方式:
- 自定义枚举
- 使用enum关键字实现
自定义枚举
- 不需要提供set方法,因为枚举类通常是只读的。
- 对枚举类的对象/属性 使用 final +static 共同修饰,实现底层的优化。
- 枚举对象名通常使用全部大写,符合常量命名规范。
- 枚举对象根据需要,可以有多个属性。
public class season {
private String name;//季节名称
private String description;
public String getName() {
return name;
}
public String getDescription() {
return description;
}
private season(String name,String description){//构造器私有化
this.name=name;
this.description=description;
}
public final static season SPRING =new season("春天","舒适");
public final static season SUMMER =new season("夏天","炎热");
public final static season AUTUMN =new season("秋天","凉爽");
public final static season WINTER =new season("冬天","寒冷");
@Override
public String toString() {
return "season{" +
"name='" + name + '\'' +
", description='" + description + '\'' +
'}';
}
public static void main(String[] args) {
System.out.println(season.AUTUMN);//使用类名直接调用静态属性。
System.out.println(season.SPRING);
System.out.println(season.SUMMER);
System.out.println(season.WINTER);
}
}
使用enum关键字实现
-
使用关键字enum 替代 class
-
使用关键字enum会隐士的继承Enum类,可以使用Enum类的相关方法
-
public final static season SPRING =new season(“春天”,“舒适”); 直接使用 SPRING(“春天”,“舒适”);替代 常量名(参数列表)
-
如果有多个常量对象,使用 逗号 ” , “隔开即可
-
如果使用enum来实现枚举,要求将定义常量对象,写在前面,既对象放在行首。
-
如果使用无参构造器,直接写变量名即可,不要带 括号();
public enum season02 {
SPRING("春天","舒适"),
SUMMER("夏天","炎热"),
AUTUMN("秋天","凉爽"),
WINTER("冬天","寒冷");
private String name;//季节名称
private String description;
public season02(String name, String description) {
this.name = name;
this.description = description;
}
@Override
public String toString() {
return "season02{" +
"name='" + name + '\'' +
", description='" + description + '\'' +
'}';
}
public static void main(String[] args) {
System.out.println( season02.AUTUMN);
System.out.println( season02.SPRING);
}
}
枚举类的常用方法:
- toString:Enum类已经重写过了,放回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息。
- name:返回当前对象名(常量),子类不能重写。
- ordinal:返回当前对象的位置号,默认0开始。就是你定义的顺序。也就是从零开始编号。
- values:返回当前枚举类的所有常量。
- valueof:将字符串转换成枚举对象,要求字符串为已有的常量名,否则抛异常。
- compareTo: 比较两个枚举常量,比较的是编号。