美文网首页
Java高级特性-枚举

Java高级特性-枚举

作者: Harper324 | 来源:发表于2019-02-27 22:39 被阅读0次

    定义

    An enum type is a special data type that enables for a variable to be a set of predefined constants.

    枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。

    语法

    public enum EnumName {
        ENUM_VALUES;
        variables;
        otherMethods;
        ....
    }
    

    例子

    public enum Week {
        SUNDAY("星期日"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
        THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
        
        private String day;
        
        Week(String day) {
            this.day = day;
        }
        
        public String getDay() {
            return day;
        }
        
        public void setDay(String day) {
            this.day = day;
        }
        
        @Override
        public String toString(){
            return day;
        }
    }
    
    
    

    注意

    1. 枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器。

    2. 构造器只能使用 private 访问修饰符,所以无法从外部调用构造器,构造器只在构造枚举值时被调用。

    3. 所有的枚举值都是 public static final 的,且非抽象的枚举类不能再派生子类。

    4. 枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。列出这些实例(枚举值)时,系统会自动添加 public static final 修饰,无需程序员显式添加。

    与普通类的区别

    1. 使用enum定义的枚举类默认继承了java.lang.Enum类
    2. 枚举类的构造器只能使用private,否则会报错
    3. 枚举类的每个实例必须在枚举类中显示的列出(,分隔 ;结尾) 列出的实例系统会自动添加public static final修饰
    4. 所有的枚举类都定义了一个values方法,该方法可以很方便的遍历所有的枚举值
    5. 枚举类对象的属性不能更改,所以要用private final修饰
    6. 枚举类不能继承其他类也不能被其他类继承。

    常用方法:

    1. String name(): 返回此枚举实例的名称,即枚举值 。
    2. String toString(): 返回枚举值的名称,与 name 方法类似,更常用。
    3. static values(): 返回一个包含全部枚举值的数组,可以用来遍历所有枚举值。
    4. static valueOf(): 返回带指定名称的指定枚举类型的枚举常量,名称必须与在此类型中声明枚举常量所用的标识符完全匹配(不允许使用额外的空白字符)。这个方法与toString相对应,因此重写 toString() 方法,一定要重写 valueOf() 方法(我们可以重写 toString() 方法,但不能自己重写 valueOf() 方法,当我们重写 toString() 方法时,valueOf() 方法会自动重写,不用我们理会)。
    5. Switch() 的参数可以接受枚举。
    6. boolean equals()方法: 比较两个枚举类对象的引用。

    枚举练习

    相关文章

      网友评论

          本文标题:Java高级特性-枚举

          本文链接:https://www.haomeiwen.com/subject/veoquqtx.html