Java 枚举 Enumeration

时间:2021-07-09 00:28:56   收藏:0   阅读:30

    

枚举:

  1. 自定义枚举类
  2. 使用enum关键字

 

  1. 不需要提供setXxx方法, 枚举对象通常只读
  2. 对枚举对象使用static final, 实现底层优化
  3. 枚举对象可有多个属性
package com.gibe;

public class Enumeration {
  public static void main(String[] args) {
    System.out.println(Season.AUTUMN);
    System.out.println(Season.WINTER);
  }
}

class Season {
  private String name;
  private String desc;
  // 定义四个固定类属性
  public static final Season SPRING = new Season("spring", "warm");
  public static final Season SUMMER = new Season("summber", "hot");
  public static final Season AUTUMN = new Season("autumn", "cool");
  public static final Season WINTER = new Season("winter", "cold");

  // 构造器私有, 防止new
  // 去掉setXxx, 防止属性被修改
  // 在类内部, 直接创建固定对象
  // 加入final
  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 "Season{" +
        "name=‘" + name + "‘" +
        ", desc=‘" + desc + ‘\‘‘ +
        "}";
  }
}

  

steps:

  1. 构造器私有化
  2. 本类内部创建对象
  3. 对外暴露对象 (public static final)
  4. 提供get方法, 不提供set方法

 

package com.gibe;

public class Enumeration {
  public static void main(String[] args) {
    System.out.println(Season.AUTUMN);
    System.out.println(Season.WINTER);
  }
}

enum Season {
  SPRING("spring", "warm"), WINTER("winter", "cold"),
  AUTUMN("autumn", "cool"), SUMMER("summer", "hot");

  private String name;
  private String desc;

  private Season() {
  }

  private Season(String name, String desc) {
    this.name = name;
    this.desc = desc;
  }

  @Override
  public String toString() {
    return "Season{" +
        "name=‘" + name + ‘\‘‘ +
        ", desc=‘" + desc + ‘\‘‘ +
        ‘}‘;
  }

  public String getName() {
    return name;
  }

  public String getDesc() {
    return desc;
  }
}

  

  1. 使用enum关键字开发枚举类时,默认继承Enum类,而且时一个final类, javap 反编译
  2. 传统的 public static final Season2 SPRING = new Season2("春天", "温暖"); 简化成 SPRING("春天", "温暖"), 这里必 须知道,它调用的是哪个构造器
  3. 使用无参构造器 创建 枚举对象, 实参列表 () 都可省

 

enum Gender{
    BOY,GIRL;  // 调用了Gender类的无参构造器
}

  

 

原文:https://www.cnblogs.com/dissipate/p/14987502.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!