У меня есть интерфейс с именем ListInterface<T>
, который имеет метод join
:
public interface ListInterface<T> {
/**
* Join a new list to the original list.
* @param otherList The new list to be joined.
* @return Original list with appended part from the new list.
* @throws IllegalArgumentException.
*/
public ListInterface<T> join(ListInterface<T> otherList) throws IllegalArgumentException;
}
Два класса DoubleLinkedList
и MyArrayList
реализуют этот интерфейс.
Поэтому в DoubleLinkedList
мне нужно написать join
так:
public ListInterface<T> join(DoubleLinkedList<T> otherList) throws IllegalArgumentException {
(...)
}
А в MyArrayList
:
public ListInterface<T> join(MyArrayList<T> otherList) throws IllegalArgumentException {
(...)
}
Но это невозможно, и тип аргументов должен быть ListInterface<T>
. Если я изменю сигнатуры методов в этих классах на public ListInterface<T> join(ListInterface<T> otherList)
, то я больше не смогу использовать другие специфические методы на DoubleLinkedList
или MyArrayList
. Как мне изменить сигнатуру метода в ListInterface
, чтобы это исправить?