我有一个用 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);
    }
}