【发布时间】:2018-12-16 17:24:17
【问题描述】:
我想为任何枚举对象创建通用方法,它将检查枚举是否具有指定的值名称,但作为Enum 类型对象,我无法使用方法values();。为什么?
有没有办法从Enum 类型的对象中获取值?
我需要这样的方法来检查配置中的值是否是myEnum.valueOf(String); 的有效字符串,因为如果给定的字符串是错误的,那么它将引发异常(我不想要它)。
我希望我的方法看起来像这样:
public static Boolean enumContains(Enum en, String valueString){
return toStringList(en.values()).contains(valueString.toUpperCase());
}
但是没有方法Enum.values()。如何正确创建这个方法?
【问题讨论】:
-
在你的例子中
Enum是什么? -
我想让它通用,所以我只将
Enum作为参数类型来匹配任何Enum对象到这个方法。 -
而
values仅适用于enum类型,例如MyEnum.values()但显然不是针对enum的特定值,如您的方法中... -
好的,正如评论中其他人所解释的那样,这对任何枚举都不起作用
-
反射也是一种解决方法,但谁想使用反射...
getDeclaredField("$VALUES");或Enum.class.getDeclaredMethod("values");用于枚举类