如何解决未检查的演员

问题描述 投票:0回答:1

我正在尝试获取类的 ENUM 字段的 ENUM 值,但按如下方式检索它会引发未经检查的强制转换警告:

value = Enum.valueOf((Class<Enum>) classField.getType(), (String) value);

警告很明确,但我很困惑如何处理/解决此警告,有什么想法吗?

[unchecked] unchecked method invocation: method valueOf in class Enum is applied to given types
  required: Class<T>,String
  found:    Class<Enum>,String
  where T is a type-variable:
    T extends Enum<T> declared in method <T>valueOf(Class<T>,String)
java enums
1个回答
0
投票

由于代码中显式转换为 Class,您遇到了未经检查的转换警告。要解决此警告,您可以使用通配符 (),而不是显式转换为 Class。这样,您就告诉编译器您不知道枚举的具体类型,但它仍然是一个枚举。具体方法如下:

Class<?> enumType = classField.getType();
value = Enum.valueOf((Class<? extends Enum>) enumType, (String) value);

通过使用 Class,您实质上是在说“某个特定的类,但我不确定到底是哪一个。”这解决了警告,因为您没有对特定枚举类型做出任何假设,而是允许任何枚举类型。

© www.soinside.com 2019 - 2024. All rights reserved.