Java枚举类型Enum用途总结

本文总结了Java中枚举类型Enum的主要用途,包括管理错误码和状态码,以及如何通过Enum实现单例模式。枚举实例具有默认序号,并内置compareTo方法。此外,枚举的构造函数默认为私有,允许自定义实例内容。Enum也被认为是实现单例模式的最佳实践,避免了反射和反序列化攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举类型Enum主要用途之一,是用来管理错误码,状态码。Enum类型实质是一种特殊的class,它不可以继承其他类,也不可以被其他类继承,但可以实现接口。

示例一:

public class EnumDemo {

    public static void main(String[] args){
        //直接引用
        Day day =Day.MONDAY;
        System.out.println(day);
    }

}
//定义枚举类型
enum Day {
    MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

讲解:

1.调用方式:Day.MONDAY

2.序号。MONDAY, TUESDAY, WEDNESDAY ... ...这些是枚举类的实例,它们内部有默认的序号,从0开始,用方法

ordinal 获取序号,Day.MONDAY.ordinal()为0,Day.TUESDAY.ordinal()为1 ... ...依次排下去。

3.比较。内部实现了compareTo方法。可以用 == 或者equals 来判断是否相同实例,两方法都是可以的。不同类型的枚举实例用==比较时,会编译报错。

下面是一种更好的实现,好在可以自定义枚举实例的内容。

public enum ErrorCodeEn {
    OK(0, "成功"),
    ERROR_A(100, "错误A"),
    ERROR_B(200, "错误B");

    ErrorCodeEn(int number, String description) {
        this.code = number;
        this.description = description;
    }
    private int code;
    private String description;
    public int getCode() {
        return code;
    }
    public String getDescription() {
        return description;
    }

    /**
     * 下面是测试
     * @param args
     */
    public static void main(String args[]) { // 静态方法
        for (ErrorCodeEn s : ErrorCodeEn.values()) {
            System.out.println("code: " + s.getCode() + ", description: " + s.getDescription());
        }
    }
}

讲解:枚举类的构造函数默认是私有的。通过构造函数自定义枚举实例的内容,实例之间用逗号隔开,最后一个末尾加分号。用枚举类型的get方法获取枚举实例的属性。(实例就是用枚举类型创建的对象)

上面就是Enum的基本用途。Enum还可以用来实现单例模式,被《Effective Java》称为最佳的单例实现模式,因为最简单,而且不会被反射和反序列化攻击破坏。

实现示例:

public enum Singleton {

    INSTANCE;

    public void doSomething() {
        System.out.println("doSomething");
    }

}

调用示例:

public class Main {

    public static void main(String[] args) {
        Singleton.INSTANCE.doSomething();
    }

}

直接通过Singleton.INSTANCE.doSomething()的方式调用即可。方便、简洁又安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值