4

私は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 ドキュメントから他のメソッド シグネチャ ( 、) をコピーしようとすると、存在しないようです。私は途方に暮れています。Setpublic boolean addAll(Collection<? extends Suits> collection)addRangecomplement

私はEnumMap代わりに行ってきました、そしてそれはうまくいきます。EnumSet不可能のようです。何か不足していますか?

4

2 に答える 2