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
posted @ 2022-03-06 23:36  平凡晨  阅读(782)  评论(0编辑  收藏  举报