用法1: 定义常量
替代传统的public static final 定义常量的方式
enum Weekday{ Sundya, Monday, Friday, ; }
注意:
1、和普通的常量一样,定义后不能修改
Weekday.Sunday ="Tusday";
2、最后的分号‘;’可以没有,但是如果要定义类方法 构造方法 等必须要加,但是不定义方法时最好也添加。
用法2:switch case中除了可以是int String ,还可以是enum枚举数据类型
enum Weekday{ Sundya, Monday, Friday, ; } class EnumDemo1{ public static void main(String[] args){ Weekday day1 =Weekday.Friday; switch(day1){ case Friday: System.out.println("星期五"); break; case Monday: System.out.println("星期一"); case Sunday: System.out.println("周日"); default: System.out.println("未在枚举中"); } } }
用法3、枚举类 定义有参数构造函数,定义/重写普通的方法
enum EnvEnum{ //实例化有限个枚举对象,并且初始化属性(要和构造方法参数对应) T1("t1","t1测试环境"), T2("t2","t2测试环境"), T3("t3","t3测试环境"), Dev1("dev1","dev1开发环境"), ; //定义实例化属性 private String name; private String desc; //有参数构造方法 -默认是private修饰,不能使用public EnvEnum(String name, String desc){ this.name =name; this.desc =desc; } //定义枚举的其他方法 public String toString(){ System.out.println("当前环境是:"+name+",描述是:"+desc); } }
注意:
1、罗列有限个枚举对象时,其参数必须和构造方法一致
2、如果不定义有参数构造方法,不能罗列有参数枚举对象(比如上面的罗列常量时,不需要有参数构造方法)
2、枚举类的有参数构造方法,不是使用public修饰,默认是使用private修饰。 因为:如果是public修饰那么在其他类中就可以调用此构造方法创建枚举对象,但是枚举类的枚举对象只能是上面罗列
出的有限个枚举对象,所以不能使用public修饰
用法4:在外部类中调用枚举类对象、对象属性、获取所有枚举对象
调用枚举对象:枚举类名.枚举对象
获取所有枚举对象:枚举类名.values()
enum EnvEnum{ //实例化有限个枚举对象,并且初始化属性(要和构造方法参数对应) T1("t1","t1测试环境"), T2("t2","t2测试环境"), T3("t3","t3测试环境"), Dev1("dev1","dev1开发环境"), ; //定义实例化属性 public String name; public String desc; //有参数构造方法 -默认是private修饰,不能使用public EnvEnum(String name, String desc){ this.name =name; this.desc =desc; } } class Demo11{ public static void main(String[] args){ //1、调用枚举对象、枚举对象的属性 if(EnvEnum.T1.name =="t1"){ System.out.println("是t1环境"); } //2、获取所有的枚举实例对象 for(EnvEnum env : EnvEnum.values()){ System.out.println(env.name); } } }
参考文档:
https://lixuekai.blog.csdn.net/article/details/52180865?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1619680762190_68030&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control