授業があります
abstract class A {
//....
}
class B extends A {
//....
}
class C extends A {
//....
}
で、〜がある
interface Maker<T extends A> {
SomeClass make(T obj);
}
Maker クラスの実装
class MakerForB implements Maker<B> { /*... */ }
class MakerForC implements Maker<C> { /*... */ }
および 1 つの静的メソッドを持つクラス Factory
class Factory {
public static SomeClass makeSomeClass(A obj) {
Maker maker = null;
if(obj instanceof B) maker = new MakerForB();
/* ... */
return maker.make(obj);
}
}
その場合、Maker をそのように宣言すると、Maker が生の型であるという警告が表示されます。
Maker<?> maker = null;
例外が発生します (引数 A に make は適用されません)
return maker.make(obj);
使用 せずにこれらの警告を取り除く最良の方法は何ですか
@SuppressWarnings("unchecked")