java中的枚举的使用

版权声明:转载请注明出处 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.接口,枚举可以实现接口,可以有方法

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.在实际的开发中,数据库字段是什么状态、什么方式、什么类型、什么操作等一组固定值优先考虑枚举.

猜你喜欢

转载自blog.csdn.net/chenmingxu438521/article/details/89736973