我有一个名为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
中的方法签名以解决此问题?
答案 0 :(得分:4)
如何更改
ListInterface
中的方法签名以解决此问题?
你不是。 ListInterface
方法签名原样正确。
如果我将这些类中的方法签名更改为
public ListInterface<T> join(ListInterface<T> otherList)
,那么我就无法在DoubleLinkedList
或MyArrayList
上使用其他特定方法。
这是正确的。您不应该使用任何子类方法,因为otherList
可能与this
的列表类型不同。用户可能会尝试将DoubleLinkedList
加入MyArrayList
,是吗?
仅使用界面方法。