-1

我有一个方法:

public Object instantiateAlmostAnyType(String stringToParse, Class<?> targetType) {
  ...
  if (targetType.isEnum())
    return Enum.valueOf((Class)targetType, stringToParse);
}

它有效,但我收到编译器警告。一切为了这return条线:

类是原始类型。对泛型类的引用应该被参数化
枚举是一种原始类型。应该参数化对泛型类型 Enum 的引用
类型安全:Class 类型的表达式需要未经检查的转换才能符合 Class
类型安全:Enum 类型的泛型方法 valueOf(Class, String) 的未经检查的调用 valueOf(Class, String)

有什么办法(除了@suppressWarnings)来避免警告吗?任何演员表?

4

2 回答 2

5
public <T extends Enum<T>> T instantiate(String stringToParse, Class<T> targetType) {
    ...
    return Enum.valueOf(targetType, stringToParse);
}

现在您在编译时检查Class实例必须是一个enum类型,并且不必进行任何不安全的强制转换。

于 2012-09-19T23:59:45.113 回答
0

直到现在我还没有找到解决方案,所以我认为这是不可能的。如果有人给我答案,我会接受

于 2012-09-29T09:22:03.510 回答