Я расширяю класс, определенный в библиотеке, которую я не могу изменить:
public class Parent
{
public void init(Map properties) { ... }
}
Если я определяю класс "Ребенок", который расширяет Parent, и я использую Java 6 с generics, как лучше всего переопределить метод init без получения предупреждений без предупреждения?
public class Child extends Parent
{
// warning: Map is a raw type. References to generic type Map<K,V> should be parameterized
public void init(Map properties) { }
}
Если я добавлю общие параметры, я получаю:
// error: The method init(Map<Object,Object>) of type Child has the same erasure as init(Map) of type Parent but does not override it
public void init(Map<Object,Object>) { ... }
// same error
public void init(Map<? extends Object,? extends Object>) { ... }
// same error
public void init(Map<?,?>) { ... }
Эта ошибка возникает независимо от того, используется ли я конкретный тип, ограниченный шаблон или неограниченный шаблон. Есть ли правильный или идиоматический способ переопределить неосновный метод без предупреждений и без использования @SuppressWarnings ( "unchecked" )?