我不知道最佳方式來表達我的問題,但我無法將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