Java 枚举enum的深入浅出(常用的4种用法)
程序员文章站
2024-01-20 17:00:52
...
在JDK1.5后引入了enum
用法一:常量
我们可以把相关的常量分组到一个枚举类型里,因为枚举提供了比常量更多的方法。
例如:
public enum Color {
RED, GREEN, YELLOW
}
用法二:实现带有抽象方法的枚举
例如: 订单状态代码
public enum OrderState {
/** 已取消 */
CANCEL {public String getName(){return "取消";}},
/** 待审核 */
WAITCONFIRM {public String getName(){return "待审核";}},
/** 等待付款 */
WAITPAYMENT {public String getName(){return "等待付款";}},
/** 正在配货 */
ADMEASUREPRODUCT {public String getName(){return "配货中";}},
/** 等待发货 */
WAITDELIVER {public String getName(){return "等待发货";}},
/** 已发货 */
DELIVERED {public String getName(){return "已发货";}},
/** 已收货 */
RECEIVED {public String getName(){return "收货成功";}};
public abstract String getName();
}
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后一个要添加分号。而且 Java 要求必须先定义 enum 实例,即要进行加括号赋值(括号里即是赋下面代码中定义的私有变量)。
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
用法四:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
public interface beyond{
void print();
String getInfo();
}
public enum Color implements beyond{
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//实现接口方法
@Override
public String getInfo() {
return this.name;
}
//实现接口方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
上一篇: 用枚举消除if-else