Java中的枚举

虽然知道在Java中存在枚举类型,但是却一直很少用。最近接触了一些,特加以总结。

枚举类型的定义

枚举类型是指由一组固定的常量组成合法值的类型。比如我们常用的:
    public static final static ERROR = -1;
    public static final static SUCCESS = 1;
根据枚举类型的定义,其实这也属于一种枚举,一种int枚举模式。这种模式存在类型安全性问题。如果你错把ERROR传入想要SUCCESS的方法中去,编译器也不会报错。

Java中的枚举

下面是一个简单的JAVA枚举类。

public enum PostLogisticsInfoEnum {
    SUCCESS(1, "发布成功"),
    ERROR(-1, "发布失败"),
    TEST("测试");

    //状态
    private Integer state;
    //信息
    private String info;

    PostLogisticsInfoEnum(Integer state, String info) {
        this(info);
        this.state = state;
    }

    PostLogisticsInfoEnum(String info) {
        this.info = info;
    }

    public Integer getState() {
        return state;
    }

    public String getInfo() {
        return info;
    }

    public static PostLogisticsInfoEnum stateOf(int index) {
        for (PostLogisticsInfoEnum infoEnum : values()) {
            if (infoEnum.getState() == index) {
                return infoEnum;
            }
        }
        return null;
    }
}

java枚举类特点

 1、构造器默认使用private修饰符修饰(其它修饰符不被允许),这样可以看出枚举类都是单例的,即不允许外部类构造枚举对象。但是可以在枚举类内部定义多个枚举实例。
 2、枚举类构造器和一般类一样,同样允许构造器的重载
 3、 每个枚举类内部存在一个静态的values()方法,它返回一个包含全部枚举值的数组

java中枚举的优点:

1、Java枚举通过公有的静态final域为每个枚举常量导出实例的类。因为没有可以访问的构造器,枚举类型是真正的final。
2、枚举提供了编译时的类型安全。
3、允许添加任意的方法和域,并实现任意的接口。提供了所有Object方法的高级实现实现了Comparable和Serializable接口,并针对枚举类型的可任意改变性设计了序列化方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值