java 枚举根据值获取名称,Java通过名称获取枚举常量

示例

假设我们有一个枚举DayOfWeek:

enum DayOfWeek {

SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;

}

枚举使用内置的静态valueOf()方法进行编译,该静态方法可用于按其名称查找常量:

String dayName = DayOfWeek.SUNDAY.name();

assert dayName.equals("SUNDAY");

DayOfWeek day = DayOfWeek.valueOf(dayName);

assert day == DayOfWeek.SUNDAY;

使用动态枚举类型也可以这样做:

Class enumType = DayOfWeek.class;

DayOfWeek day = Enum.valueOf(enumType, "SUNDAY");

assert day == DayOfWeek.SUNDAY;

如果指定的枚举不具有名称匹配的常量,则这两种valueOf()方法都将引发IllegalArgumentException。

Guava库提供了一个辅助方法,该方法返回一个Guava以消除显式的异常处理:Enums.getIfPresent()Optional

DayOfWeek defaultDay = DayOfWeek.SUNDAY;

DayOfWeek day = Enums.valueOf(DayOfWeek.class, "INVALID").or(defaultDay);

assert day == DayOfWeek.SUNDAY;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值