我不知道最佳方式来表达我的问题,但我无法将ArrayList<class_that_implements_comparable>
传递到与参数不同的类中的方法ArrayList<Comparable>
。将ArrayList <SomeClass>传递给参数ArrayList中的方法<Comparable>
比方说,我有一个司机二班的ArrayList:
ArrayList<Person> peopleList;
ArrayList<Place> placeList;
无论是人类和广场类实现可比。
然后,在一类称为排序,我有两种方法:
public static void sort(ArrayList list){
sortList(list);
}
public static void sortList(ArrayList<Comparable> list)
{
//Code here
}
有了这个设置,我可以打电话给Sorts.sort(peopleList)和Sorts.sort(placeList)没有任何问题。它完美的作品。
然而,如果我改变排序方法的签名有ArrayList<Comparable>
参数...
public static void sort(ArrayList<Comparable> list){
sortList(list);
}
我碰到下面的错误在我的驱动程序类:
Error:(59, 14) java: method sort in class Sorts cannot be applied to given types;
required: java.util.ArrayList<java.lang.Comparable>
found: java.util.ArrayList<Passenger>
reason: actual argument java.util.ArrayList<Passenger> cannot be converted to java.util.ArrayList<java.lang.Comparable> by method invocation conversion
为什么java允许我使用非泛型ArrayList
自变量将通用ArrayList<>
传递给另一个类,然后将该ArrayList
传递给另一个使用的方法的说法,但它不会让我通过一个通用的ArrayList<>
直接到ArrayList<Comparable>
?
有没有一种方法,我可以直接转换它,而不必使用额外的方法?
非常感谢您的宝贵时间和您可以提供的任何见解!
谢谢后继承可比各类!这使得总体感觉和帮助非常大。 – 2014-10-31 06:35:38
然后,这会要求我将>添加到ArrayList传递给其他任何方法。有没有办法去除这个要求? –
2014-10-31 06:40:17
取决于你的方法。如果他们与你的'sort'方法有相同的想法(接受所有可比对象的列表),那么你应该。 – 2014-10-31 06:47:38