0

除了为作业实现 Bag & List 之外,下一步是创建有序版本。一个要求是使用正确的类型参数和约束来指定参数化接口 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>>

作为实现声明者,但随后我收到一条警告,指出扩展上存在语法错误。

我如何满足这里的要求?

4

1 回答 1

2

在您的OrderedList类声明中,泛型类型OrderedList需要与 OrderedCollection 期望的限制相匹配。

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