转:https://blog.csdn.net/xxdw1992/article/details/107408498
1 定义枚举
使用enum关键字来定义枚举
public enum ContractOperate_Enum implements BaseEnum {
XIN_QIAN("2", "合同新签"),
XIN_QIAN_ON_TESE("3", "试住合同上新签正式合同"),
XU_QIAN("4", "合同续签"),
HU_LI_DENG_JI_BIAN_GENG("5","护理等级变更"),
HUAN_FANG("6","换房"),
TIAN_JIA_RU_ZHU_REN("7","添加入住人"),
YI_CHU_RU_ZHU_REN("8","移除入住人"),
RU_ZHU_FAN_SHI_BIAN_GENG("9","入住方式变更"),
JIE_SU("10", "合同结束");
private String code;
private String desc;
private ContractOperate_Enum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public static ContractOperate_Enum getByCode(String code) {
if (TxtUtil.isEmpty(code))
return null;
ContractOperate_Enum[] allEnums = ContractOperate_Enum.values();
for (ContractOperate_Enum thisEnum : allEnums) {
if (thisEnum.code.equals(code)) {
return thisEnum;
}
}
return null;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
注意,定义枚举类的关键字是enum,而不是Enum,所有关键字都是小写的!
其中XIN_QIAN、XIN_QIAN_ON_TESE等9个都是枚举项,它们都是本类的实例,本类一共就只有9个实例对象。
在定义枚举项时,多个枚举项之间使用逗号分隔,最后一个枚举项后需要给出分号!但如果枚举类中只有枚举项(没有构造器、方法、实例变量),那么可以省略分号!建议不要省略分号!
不能使用new来创建枚举类的对象,因为枚举类中的实例就是类中的枚举项,所以在类外只能使用类名.枚举项
2 所有枚举类都是Enum的子类
3 枚举类的构造器
枚举类也可以有构造器,构造器默认都是private修饰,而且只能是private。因为枚举类的实例不能让外界来创建
4 枚举类可以有成员
其实枚举类和正常的类一样,可以有实例变量,实例方法,静态方法等等,只不过它的实例个数是有限的,在定义枚举的时候就已经定好有几个实例了
5 枚举类中还可以有抽象方法
还可以在枚举类中给出抽象方法,然后在创建每个枚举项时使用“特殊”的语法来重复抽象方法。
enum Direction {
FRONT() {
public void fun() {
System.out.println("FROND:重写了fun()方法");
}
},
BEHIND() {
public void fun() {
System.out.println("BEHIND:重写了fun()方法");
}
},
LEFT() {
public void fun() {
System.out.println("LEFT:重写了fun()方法");
}
},
RIGHT() {
public void fun() {
System.out.println("RIGHT:重写了fun()方法");
}
};
public abstract void fun()[只需要把fun()方法修改为抽象方法,但不可以把Direction类声明为抽象类。];
}
6 每个枚举类都有两个特殊方法