0

割り当てのバッグとリストを実装することに加えて、次のステップは順序付けられたバージョンを作成することです。要件は、正しい型パラメーターと制約を使用してパラメトリックインターフェイスOrderedCollectionを指定することです。私の問題はそれを実装することです。

インターフェイスCollection <E>が存在し、次のように定義されます

public interface Collection<E> extends Iterable<E>{
  public void add(E e);
  public void remove(E e);
  public boolean contains(Object e);
  public void clear();
  public int size();
  public boolean isEmpty();
  public Object[] toArray();
}

それはクラスによって実装されます

public class UnorderedList<E> implements Collection<E>
public class UnorderedBag<E> extends UnorderedList<E> implements Collection<E>

構造が機能していて、ソートされたバージョンを実装しようとしています。これを行い、要件の一部を満たすために、私は次のように作成OrderedCollectionしました

public interface OrderedCollection <E extends Comparable<E>> {
  public int compareTo(E e);
}

ですでに定義されているメソッドを拡張しておりCollection、必要な新しい機能はcompareTo()メソッドだけだからです。

しかし、OrderedList宣言で実装しようとすると

public class OrderedList<E> extends UnorderedList<E> implements OrderedCollection<E>

エラーが発生しました

Bound mismatch: The type E is not a valid substitute for the bounded parameter <E
extends Comparable<E>> of the type OrderedCollection<E>

エラーメッセージを理解しているので、インターフェイス宣言で指定されたものの有効な代替となるパラメータタイプを指定する必要があります。しかし、私は試しました

OrderedCollection<E extends Comparable<E>>

はdeclarerを実装しますが、extendsに構文エラーが存在するという警告が表示されます。

ここで要件を満たすにはどうすればよいですか?

4

1 に答える 1

2

OrderedListクラスの宣言では、ジェネリック型はOrderedListOrderedCollectionが期待する制限と一致する必要があります。

public class OrderedList<E extends Comparable<E>> 
             extends UnorderedList<E> 
             implements OrderedCollection<E>
于 2011-11-17T00:02:49.597 に答える