zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    java Activiti 工作流引擎 SSM 框架模块设计方案
    自定义表单 Flowable 工作流 Springboot vue.js 前后分离 跨域 有代码生成器
    数据库设计的十个最佳实践
    activiti 汉化 stencilset.json 文件内容
    JAVA oa 办公系统模块 设计方案
    java 考试系统 在线学习 视频直播 人脸识别 springboot框架 前后分离 PC和手机端
    集成 nacos注册中心配置使用
    “感恩节 ”怼记
    仓颉编程语言的一点期望
    关于System.out.println()与System.out.print("\n")的区别
  • 原文地址:https://www.cnblogs.com/jesse-zhao/p/14721499.html
Copyright © 2011-2022 走看看