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);
}
}