我试图在抽象方法中使用通用EnumMap作为参数。我的问题是,当我使用EnumMap的现有枚举实现抽象方法时,编译器告诉我必须删除Override Annotation并实现super方法。
这是我的抽象类:
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;
}
}
也许我太傻了,但是我在做什么错呢?
谁能帮我?
您应该键入您的类,而不仅仅是方法。尝试这个:
import java.util.EnumMap;
import java.util.HashMap;
public abstract class AbstractClazz<K extends Enum<K>> {
public abstract boolean isVisible(EnumMap<K, Object> visibleConditions);
}
和:
import java.util.EnumMap;
public class Clazz extends AbstractClazz<Numbers> {
@Override
public boolean isVisible(EnumMap<Numbers, Object> visibleConditions) {
return false;
}
}
编辑:要使其工作,将数字枚举放在其自己的文件中:
public enum Numbers {
ONE, TWO, THREE
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句