版权声明:转载请注明出处 https://blog.csdn.net/chenmingxu438521/article/details/89736973
一、简介
1.java枚举是1.5才有的特性,关键字enum.
2.它是个特殊类,拥有编译安全、完全单例、线程安全.
3.它也可以像其他类,可以实现接口、定义抽象方法,但是不能继承其他类.
二、下面先贴出一个简单的实例
1.定义一个枚举类
public enum Status {
SCUUESS("1","成功"), FAILED("2","失败");
private String value;
private String desc;
Status(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
2.测试类
public class StatusTest {
public static void main(String[] args) {
System.out.println(Status.SCUUESS.getValue());
System.out.println(Status.SCUUESS.getDesc());
}
}
3.结果
1
成功
你看明白了嘛,看明白了咱们在试试实际开发中的例子
三、实际开发中怎么用
1.接口,枚举可以实现接口,可以有方法
扫描二维码关注公众号,回复:
6083424 查看本文章
public interface IEnum {
String getCode();
String getDesc();
}
2.实现接口
public enum PaySourceTypeEnum implements IEnum {
ALIPLY("ALIPLY","支付宝"),
WECHAT("WECHAT","微信支付"),
UNIONPAY("UNIONPAY","银联支付宝");
//枚举标识符
private String code;
//枚举描述
private String desc;
//默认私有构造函数,防止new对象的
private PaySourceTypeEnum(String code, String desc) {
this.code=code;
this.desc=desc;
}
//还有一个根据枚举CODE去找相应枚举值,这个在实际开发中非常常用
public static String getByCode(String code){
for (PaySourceTypeEnum value:PaySourceTypeEnum.values()){
if (value.getCode().equals(code)){
return value.getDesc();
}
}
return null;
}
@Override
public String getCode() {
return code;
}
@Override
public String getDesc() {
return desc;
}
}
3.测试
public class PaySourceTypeEnumTest {
public static void main(String[] args) {
System.out.println(PaySourceTypeEnum.getByCode("ALIPLY"));
}
}
4.结果
支付宝
四、上面的实际应用场景
1.当前端有下拉框什么类型值的时候,就可以在后端定义相应的枚举类。
2.一个枚举对应一个下拉框,前端不用改,只需要改后端增加枚举值就行了,扩展维护很方便,顺序也可以灵活控制。
3.上面就是它的实际应用场景中的一种。
五、总结
1.枚举在外部不能手动创建(new、clone、反射、序列化都不可以),JVM层保证.
2.不能被继承.
3.枚举线程安全.
4.枚举是线程安全的typesafe.
5.不能继承其他类,默认继承enum.
6.在实际的开发中,数据库字段是什么状态、什么方式、什么类型、什么操作等一组固定值优先考虑枚举.