如何编写具有在Java中实现接口的参数的方法

时间:2018-04-29 16:30:04

标签: java class generics methods interface

我有一个名为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;
}

两个类DoubleLinkedListMyArrayList实现此接口。 所以在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),那么我就无法在DoubleLinkedListMyArrayList上使用其他特定方法。我应该如何更改ListInterface中的方法签名以解决此问题?

1 个答案:

答案 0 :(得分:4)

  

如何更改ListInterface中的方法签名以解决此问题?

你不是。 ListInterface方法签名原样正确。

  

如果我将这些类中的方法签名更改为public ListInterface<T> join(ListInterface<T> otherList),那么我就无法在DoubleLinkedListMyArrayList上使用其他特定方法。

这是正确的。您不应该使用任何子类方法,因为otherList可能与this的列表类型不同。用户可能会尝试将DoubleLinkedList加入MyArrayList,是吗?

仅使用界面方法。