我有一个用 type 泛型的类<T extends Enum<T> & Runnable>
。我有一个Class<T> bar
由类名设置的成员变量:t = (Class<T>) Class.forName(name)
. 这给了我一个未经检查的演员警告。
通常,使用asSubclass可以在类似的情况下使用,但由于T
有多个界限,我无法在没有得到编译器警告的情况下使用它:
//This is type safe, but I still get an unchecked cast warning
t = (Class<T>) Class.forName(className).asSubclass(Enum.class).asSubclass(Runnable.class);
我可以在不使用的情况下以任何方式摆脱这个警告@SupressedWarning("unchecked")
吗?
完整示例:
public class Example<T extends Enum<T> & Runnable> {
Class<T> t;
Example(String className) throws ClassNotFoundException {
t = (Class<T>) Class.forName(className).asSubclass(Enum.class).asSubclass(Runnable.class);
}
}