日常开发中较少使用枚举, 因此对于其用法并没有一个好的总结, 于是有了这篇文章, 来帮助你我共同认识枚举.

# 枚举的意义

日常开发中经常出现有些域的值是在固定的一些值中进行选择, 或者说是指定范围内取值, 如果使用了超出范围的值, 则会导致非期望的结果, 枚举便是胜任这种情况的.

# 一些细节

  1. 比较枚举类型的值时, 请直接使用'=='进行比较.
  2. toString()返回枚举常量名.
  3. valueOf()是toString()的逆方法
/*将s设置为Size.SMALL*/
Size s = Enum.valueOf(Size.class, "SMALL");
  1. ordinal()返回常量在enum中声明的位置, 从0开始计数.
  2. compareTo(E other), 如果常量出现在other之前则返回负数, =返回0,之后返回正数.

# 实际使用案例

  1. 在enum中定义abstract方法, 要求每一个enum类型去实现abstract方法.
/*此方式用于每个枚举类型都存在不同的情况.*/
public class Enum Size{
  public abstract getCode();
  public abstract getValue();

  SMALL{
    public abstract getCode(){
      return "S-Code";
    }
    public abstract getValue(){
      return "S-Value";
    }
  }
}
  1. 在Enum中定义的方法, 是每一个枚举值都拥有的, 如果定义了abstract方法也是每一个枚举值需要实现的, 同样可以定义构造方法, 用于定义枚举值时便按照指定方法进行构造
/*定义枚举值时需按照构造方法来定义*/
public enum Endpoint {

    US("b.aa.com"),
    UK("c.aa.co.uk"),
    DE("d.aa.de"),
    FR("e.aa.fr"),
    JP("f.aa.jp"),
    CN("g.aa.com.cn"),
    IT("h.aa.it");

    private final String url;

    private Endpoint(String domain) {
        this.url = "https://" + domain + "/";
    }

    @Override
    public String toString() {
       return url;
    }

}
修改于: 8/11/2022, 3:17:56 PM