Помимо реализации 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>>
как декларатор реализаций, но затем я получаю предупреждение о том, что существует синтаксическая ошибка на extends.
Как мне удовлетворить требования здесь?