Java枚举详解(8种常见枚举用法)

Java枚举详解(8种常见枚举用法)-mikechen

Java枚举是一种特殊的数据类型,用于表示一组具名的常量,下面详解常见的8种Java枚举方式@mikechen

1. 基本枚举类型

在Java中,使用 enum 关键字定义一个枚举类型。

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

 

2. 带有值的枚举

每个枚举常量都有一个关联的值,通过构造方法初始化。

如下所示:

public enum Day {
    SUNDAY("Sun"), MONDAY("Mon"), TUESDAY("Tue"), WEDNESDAY("Wed"),
    THURSDAY("Thu"), FRIDAY("Fri"), SATURDAY("Sat");

    private final String abbreviation;

    private Day(String abbreviation) {
        this.abbreviation = abbreviation;
    }

    public String getAbbreviation() {
        return abbreviation;
    }
}

 

3.Switch语句使用枚举

枚举类型在 switch 语句中非常有用,如下所示:

Day today = Day.MONDAY;

switch (today) {
    case MONDAY:
        System.out.println("It's Monday!");
        break;
    case TUESDAY:
        System.out.println("It's Tuesday!");
        break;
    // 其他case...
    default:
        System.out.println("It's some other day.");
        break;
}

 

4.实现接口的枚举

枚举类型可以实现接口,为每个枚举常量提供不同的实现。

如下所示:

public enum Operation implements MathOperation {
    ADD {
        @Override
        public int apply(int x, int y) {
            return x + y;
        }
    },
    SUBTRACT {
        @Override
        public int apply(int x, int y) {
            return x - y;
        }
    },
    // 其他枚举常量...
}

 

5.枚举的遍历

通过 values() 方法,可以遍历枚举的所有常量。

如下所示:

for (Day day : Day.values()) {
    System.out.println(day);
}

 

6.特点方法枚举

枚举类型可以包含常量特定的方法,这些方法在每个枚举常量上提供不同的实现。

如下所示:

public enum Operation {
    ADD {
        @Override
        public int apply(int x, int y) {
            return x + y;
        }
    },
    SUBTRACT {
        @Override
        public int apply(int x, int y) {
            return x - y;
        }
    },
    // 其他枚举常量...
}

 

7.获取枚举常量的顺序

ordinal() 方法返回枚举常量在枚举中的位置,从0开始计数。

如下所示:

int position = Day.MONDAY.ordinal(); // 返回 MONDAY 在枚举中的位置,从0开始计数

 

8.获取枚举常量的名称

name() 方法返回枚举常量的名称,如下所示:

String dayName = Day.MONDAY.name(); // 返回枚举常量的名称,例如 "MONDAY"

以上是关于Java枚举的常见用法,包括定义、遍历、实现接口、包含其他属性和方法等,选择适当的方法取决于具体的应用场景。

评论交流
    说说你的看法