我有课
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> { /*... */ }
和具有一种静态方法的类工厂
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;
我得到异常(make不适用于参数A)
return maker.make(obj);
在不使用 的情况下摆脱这些警告的最佳方法是什么
@SuppressWarnings("unchecked")