私はEclipseEnumSet
で実装するために拡張しようとしました。Comparable
しかし、私は最初から間違いだらけです。これが私が始めるものです:
package sets;
import java.util.EnumSet;
enum Suits{
SPADE, DIAMOND, CLUB, HEART;
}
class ExtendedEnumSet extends EnumSet<Suits> implements Comparable<Suits> {
}
(課題 1) 明示的なコンストラクターの定義
それはすぐに私に通知します: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
不可能のようです。何か不足していますか?