我试图扩展EnumSet
以Comparable
在 Eclipse 中实现。然而,我从一开始就充满了错误。这是我的开始:
package sets;
import java.util.EnumSet;
enum Suits{
SPADE, DIAMOND, CLUB, HEART;
}
class ExtendedEnumSet extends EnumSet<Suits> implements Comparable<Suits> {
}
(问题一)定义一个显式构造函数
它立即通知我:Implicit super constructor EnumSet<Suits>() is undefined for default constructor. Must define an explicit constructor.
所以,我按照快速修复并添加了以下构造函数:
ExtendedEnumSet(Class<Suits> finalArg0, Enum[] finalArg1) {
super(finalArg0, finalArg1);
// TODO Auto-generated constructor stub
}
...然后它通知我:The constructor EnumSet<Suits>(Class<E>, Enum[]) is not visible
。我尝试更改此类和此构造函数的访问修饰符无济于事。
(问题2)覆盖抽象方法
下一个问题是当我决定继续并修复 Eclipse 报告的下一个错误时:The type ExtendedEnumSet must implement the inherited abstract method AbstractCollection<Suits>.iterator()
. 当然,这只是冰山一角。我再次使用快速修复 ( add unimplemented methods
) 并添加以下内容:
@Override
public int compareTo(Suits finalO) {
// TODO Auto-generated method stub
return 0;
}
@Override
void addAll() {
// TODO Auto-generated method stub
}
@Override
void addRange(Suits finalArg0, Suits finalArg1) {
// TODO Auto-generated method stub
}
@Override
void complement() {
// TODO Auto-generated method stub
}
@Override
public Iterator<Suits> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
然后报告到哪里The method addAll() of type ExtendedEnumSet must override or implement a supertype method
。addRange
它为和回显此错误complement
。我可以从:复制addAll
签名。但是,当我尝试从 API 文档复制其他方法签名 ( , ) 时,它们似乎不存在。我不知所措。Set
public boolean addAll(Collection<? extends Suits> collection)
addRange
complement
我EnumMap
改用了,效果很好。EnumSet
似乎是不可能的。我错过了什么吗?