java中的枚举
枚举的理解
- 枚举是一组常量的集合,可以理解:枚举属于一种特殊的类,里面包含一组有限的特定对象
枚举定义的两种方式(自定义枚举和enum关键字枚举)
第一种枚举的自定义的实现步骤和注意事项
- 不要提供Setxxx方法,因为枚举对象值通常为只读
- 对枚举对象的属性使用:public+final+static修饰符
- 枚举对象名通常使用全部大写,常量命名规范
- 枚举对象根据需要,也可以有多个属性
- 在本类的内部创建一组本类实例对象
- 案例
public class ad { public static void main(String[] args) { //打印枚举的单个对象实例 System.out.println(GRY.GREEN); } //自定义枚举 public static class GRY { //创建多个枚举对象的实例 public final static GRY GREEN = new GRY("1","绿灯"); public final static GRY RED = new GRY("1","红灯"); public final static GRY YELLO = new GRY("1","黄灯"); private String type; //类型 private String desc; //描述 //构造器私有化 private GRY(String type, String desc) { this.type = type; this.desc = desc; } //只给getxx方法 不要set 方法,因为set方法可以修改 public String getType() { return type; } public String getDesc() { return desc; } @Override public String toString() { return type + "\n"+ desc ; } } }
Enum关键字定义枚举
- 使用关键字enum来替代class
- 用常量名.(实惨列表)在类内部的第一行来定义
- 如果有多个常量(对象)中间用,号隔空
- 如果使用enum来实现枚举,使用,号隔开
- 举例
class Weather { public static void main(String[] args) { //打印自定义枚举常量 System.out.println(Season.SPRING); System.out.println(Season.WINTER); System.out.println(Season.AUTUMN); System.out.println(Season.SUMMER); } enum Season { //如果使用 enum 来实现枚举,要求将定义常量对象,写在前面 // 如果我们使用的是无参构造器,创建常量对象,则可以省略 () SPRING("春天", "温暖"), WINTER("冬天", "寒冷"), AUTUMN("秋天", "凉爽"), SUMMER("夏天", "炎热"); private String name; private String desc;//描述 private Season() {//无参构造器 } private Season(String name, String desc) {//有参构造器 并私有化 this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } @Override public String toString() { return name + "\t" + desc ; } } }
enum关键字的注意事项
- 当enum关键字开发一个枚举类时,默认会继承enum类,这个类是一个final类,不能再被继承
- 如果我们使用是无参构造器,则可以直接写常量名,小括号可以省略
- 枚举对象必须放在枚举的首行
- 使用enum关键字后,不能使用其他类,因为enum会隐式继承Enum
- 枚举类型对象之间的值比较式可以用==,直接比较不用equlas