gpt4 book ai didi

java - 为什么我不能从 Enum 对象类中获取 .values()?

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:48 24 4
gpt4 key购买 nike

我想为任何枚举对象创建通用方法,该方法将检查枚举是否具有指定的值名称,但作为 Enum 类型对象,我无法使用方法 values(); 。为什么?

有什么方法可以从Enum 类型的对象中获取值吗?

我需要这样的方法来检查配置中的值是否是 myEnum.valueOf(String); 的有效字符串,因为如果给定的字符串是错误的,那么它会抛出异常(我确实这样做了不想要它)。

我希望我的方法看起来像这样:

public static Boolean enumContains(Enum en, String valueString){
return toStringList(en.values()).contains(valueString.toUpperCase());
}

但是没有方法 Enum.values()。如何正确创建该方法?

最佳答案

Enum#values是一个由编译器生成的方法,所以你不能在编译时使用它,除非你传入一个特定的枚举而不是 Enum<?> .

参见:https://stackoverflow.com/a/13659231/7294647

一个解决方案是传入 Class<E extends Enum<E>>而是使用 Class#getEnumConstants :

public static <E extends Enum<E>> Boolean enumContains(Class<E> clazz, String valueString){
return toStringList(clazz.getEnumConstants()).contains(valueString.toUpperCase());
}

如果您有一个名为 MyEnum 的枚举, 然后你可以简单地传入 MyEnum.class作为第一个参数。

关于java - 为什么我不能从 Enum 对象类中获取 .values()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com