gpt4 book ai didi

java - 对于不扩展 Enum 的泛型,Enum.valueOf 的替代品?

转载 作者:行者123 更新时间:2023-11-30 02:18:30 29 4
gpt4 key购买 nike

我有以下代码

protected <T> T func(Class<T> c) {
if (c.isEnum()) {
try {
return c.cast(Enum.valueOf(c, "string"));
} catch (IllegalArgumentException e) {
return null;
}
}
return null;
}

IDEA 报告错误 Wrong 1st argument type. Found: 'java.lang.Class<T>', required: 'java.lang.Class<T>'valueOf功能。我可以通过指定 <T extends Enum<T>> 来避免此错误在函数头中,但想法是 T可以是多种类型,而不仅仅是枚举。是否可以在不限制的情况下编译/运行代码 T

最佳答案

我没有使用Enum.valueOf(),而是使用了Class.getEnumConstants()

protected <T> T func(Class<T> c) {
if (c.isEnum())
for (T t : c.getEnumConstants())
if (((Enum<?>) t).name().equals("KG"))
return t;
return null;
}

这样编译时不会发出警告,但我不确定这是否是您想要的。

关于java - 对于不扩展 Enum 的泛型,Enum.valueOf 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47559009/

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