050.枚举类型

枚举类型

枚举类的概述

  • 枚举是从 java5 开始提供的一种新的数据类型,
    是一个特殊的类, 就是固定的多个常量对象的集合.

定义的格式:

[修饰符] enum 枚举类名{
    //枚举常量
    常量A, 常量B, 常量C;
}

枚举类的实际封装

  • 首先, 先定义一个枚举类.
    public enum Weekday{
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
    }
  • 实际上, 反编译过后的真实封装是类似如下效果.
    (真实反编译封装还会有索引值及类数组的封装等操作.)
    final public class Weekday extends Enum{
        //构造器私有化, 防止被外部调用导致数据不安全
        private Weekday(){}
        //定义静态常量, 让结构语义清晰, 也让数据不可修改.
        public static final Weekday MONDAY = new Weekday();
        public static final Weekday TUESDAY = new Weekday();
        public static final Weekday WEDNESDAY = new Weekday();
        public static final Weekday THURSDAY = new Weekday();
        public static final Weekday FRIDAY = new Weekday();
        public static final Weekday SATURDAY = new Weekday();
        public static final Weekday SUNDAY = new Weekday();
    }

枚举类的特点

  1. 枚举的直接父类 java.lang.Enum, 但是不会显示继承 Enum
  2. 枚举就相当于一个类, 可以定义构造方法, 成员变量, 普通方法和抽象方法.
  3. 默认私有的构造方法, 即使不写访问修饰符, 也会隐式加上 private
  4. 每个实例分别用一个全局变量表示, 枚举类的对象是固定的,
    实例个数有限, 不能使用 new 关键字
  5. 枚举实例必须位于枚举体中的最开始部分,
    枚举实例列表的后面要有分号与其它成员相隔
  6. 枚举实例后有花括号时, 该实例是枚举类的匿名内部类对象.
  7. 其父类覆盖了 toString 方法, 返回的是变量的名称.

你可能感兴趣的:(Java,笔记,java)