Я попытался использовать общий EnumMap как параметр в абстрактном методе. Моя проблема в том, что когда я реализую абстрактный метод с существующим enum для EnumMap, компилятор говорит мне, что мне нужно удалить переопределяющую аннотацию и реализовать супер метод.Как использовать общий параметр EnumMap в абстрактных методах
Вот мой абстрактный класс:
import java.util.EnumMap;
import java.util.HashMap;
public abstract class AbstractClazz {
// The methode I tried to define
public abstract <K extends Enum<K>> boolean isVisible(EnumMap<K, Object> visibleConditions);
// second test
public abstract <K> boolean isVisible2(HashMap<K, Object> visibleConditions);
// third test
public abstract boolean isVisible3(EnumMap<?, Object> visibleConditions);
}
И класс реализации:
import java.util.EnumMap;
import java.util.HashMap;
public class Clazz extends AbstractClazz {
public enum Numbers {
ONE, TWO, THREE
}
// Error: The method isVisible(EnumMap<Clazz.Numbers,Object>) of type Clazz must override or implement a supertype method
@Override
public boolean isVisible(EnumMap<Numbers, Object> visibleConditions) {
return false;
}
// Error: The method isVisible2(HashMap<Clazz.Numbers,Object>) of type Clazz must override or implement a supertype method
@Override
public boolean isVisible2(HashMap<Numbers, Object> visibleConditions) {
return false;
}
// Error: The method isVisible3(EnumMap<Numnbers,Object>) of type Clazz must override or implement a supertype method
@Override
public boolean isVisible3(EnumMap<Numnbers, Object> visibleConditions) {
return false;
}
}
Может быть И слишком глупо, но что я делаю не так?
Может ли кто-нибудь мне помочь?
Я думаю, что не так много усиления с помощью ' EnumMap как сырые типы. Используйте их правильно с параметрами типа. –