专栏名称: Java编程精选
关注语言编程Java,分享、交流Java编程技巧和信息
目录
相关文章推荐
芋道源码  ·  项目终于用上了 Spring 状态机,太优雅了! ·  4 小时前  
芋道源码  ·  好记性不如烂笔头:Spring(春天) ·  昨天  
芋道源码  ·  如何为开放平台设计一个安全好用的OpenApi ·  昨天  
芋道源码  ·  能在一家不到 20 人的 IT ... ·  2 天前  
芋道源码  ·  疯传Java界,堪称最强! ·  2 天前  
51好读  ›  专栏  ›  Java编程精选

Java 中如何使用枚举来消除 if/else

Java编程精选  · 公众号  · Java  · 2025-06-10 18:00

主要观点总结

本文介绍了Java中的枚举类型,包括定义、构造器、枚举类成员、values()和valueOf(String name)方法的使用,以及枚举在日常开发中的应用。文章强调枚举类型可以消除部分if-else语句,增强类型约束,并在switch语句和单例模式中有广泛应用。

关键观点总结

关键观点1: 枚举的定义和特性

枚举是一种被命名的整型常数的集合,可以定义具有特定行为的集合。

关键观点2: 构造器的使用

枚举类的构造器默认是private的,并且只能使用private构造器来创建枚举实例。

关键观点3: 枚举类成员

枚举类可以拥有成员变量、实例方法和静态方法等,就像普通类一样。

关键观点4: values()和valueOf(String name)方法

每个枚举类都有values()方法返回所有枚举常量,以及valueOf(String name)方法通过名字返回对应的枚举常量。

关键观点5: 枚举的应用

枚举可以用于类型约束、switch语句、实现接口以及单例模式中。通过枚举可以消除if-else语句,增强代码的可读性和可维护性。


正文

请到「今天看啥」查看全文


hello hello hello hello hello hello hello

构造函数共执行了 7 次,正好对应类中枚举项的数量。其实此类的枚举项的创建,就相当于其他类调用无参构造器 new 出来的对象,也就是这个枚举类创建了7次实例,所以输出了7个 hello。

除了无参构造器,枚举类也有有参构造器。

public enum Week {
    SUNDAY(7), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6);

    Week(int weekNum){
        System.out.println(weekNum);
    }

}

这次将会输出:

7 1 2 3 4 5 6

枚举类成员

枚举类和正常类一样,也可以有成员变量、实例方法、静态方法等。

public enum Week {
    SUNDAY(7), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6);

    private int weekNum;

    Week(int weekNum){
        this.weekNum = weekNum;
    }

    public int getWeekNum() {
        return weekNum;
    }

}

使用:

public class Test {
    public static void main(String[] args) {
        Week w = Week.FRIDAY;
        System.out.println(w.getWeekNum());
    }
}

输出:

5

枚举类中还可以有 抽象方法

public enum Week {
    SUNDAY(){
        @Override
        public void getWeekNum() {
            System.out.println(7);
        }
    },
    MONDAY() {
        @Override
        public void getWeekNum() {
            System.out.println("星期一");
        }
    },

    TUESDAY(){
        @Override
        public void getWeekNum() {
            System.out.println("礼拜二");






请到「今天看啥」查看全文