У меня есть классы
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> { /*... */ }
и класса 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;
Я получаю исключение (make не применим для аргументов A) на
return maker.make(obj);
Как лучше всего избавиться от этих предупреждений без , используя
@SuppressWarnings("unchecked")