java中枚举类enum

用法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

posted on 2021-05-04 11:39  jesse_zhao  阅读(264)  评论(0编辑  收藏  举报

导航