【发布时间】:2010-01-13 12:17:41
【问题描述】:
我有课
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")
【问题讨论】:
标签: java generics warnings static-methods