日常开发中较少使用枚举, 因此对于其用法并没有一个好的总结, 于是有了这篇文章, 来帮助你我共同认识枚举.
# 枚举的意义
日常开发中经常出现有些域的值是在固定的一些值中进行选择, 或者说是指定范围内取值, 如果使用了超出范围的值, 则会导致非期望的结果, 枚举便是胜任这种情况的.
# 一些细节
- 比较枚举类型的值时, 请直接使用'=='进行比较.
- toString()返回枚举常量名.
- valueOf()是toString()的逆方法
/*将s设置为Size.SMALL*/
Size s = Enum.valueOf(Size.class, "SMALL");
- ordinal()返回常量在enum中声明的位置, 从0开始计数.
- compareTo(E other), 如果常量出现在other之前则返回负数, =返回0,之后返回正数.
# 实际使用案例
- 在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";
}
}
}
- 在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;
}
}