前言:
实现一个枚举类及枚举类使用时需要了解的注意的地方:
- enum和class、interface的地位是一样。
- 使用enum定义的枚举类默认继承了java.lang.Enum,而不是继承Object类。枚举类可以实现一个或多个接口。
- 枚举类的所有实例都必须放在第一行展示,不需使用new 关键字,不需显式调用构造器。自动添加public static final修饰。
- 使用enum定义、非抽象的枚举类默认使用final修饰,不可以被继承。
- 枚举类的构造器只能是私有的。
枚举类实现:
/**
* 枚举类
*/
public enum DataEnum {
/**
* 线上01, 这是枚举类的实例,必须放在第一行展示,多个实例之间使用逗号隔开,实例的修饰符默认使用public static final
*/
ONLINE("01"),
/**
* 线下02
*/
OFFLINE("02");
private String value;
/**
* 枚举类的构造器必须私有构造器
*
* @param value
*/
private DataEnum(String value) {
this.value = value;
}
/**
* 判断是否存在某个枚举值
*
* @param value
* @return
*/
public static boolean contain(String value) {
for (DataEnum de : values()) {
if (de.getValue().equals(value)) {
return true;
}
}
return false;
}
/**
* 公共的get方法
*
* @return
*/
public String getValue() {
return value;
}
/**
* 公共的set方法
*
* @param value
*/
public void setValue(String value) {
this.value = value;
}
}
测试:
public class EnumTest {
public static void main(String[] args) {
System.out.println(DataEnum.ONLINE.getValue());
// 重新设置枚举值
DataEnum.ONLINE.setValue("03");
System.out.println(DataEnum.ONLINE.getValue());
// 判断是否某个枚举值
System.out.println(DataEnum.contain("03"));
}
}