我有一个采用 ArrayList<Comparable> 的排序方法,使用 compateTo() 方法对其进行排序,然后返回排序后的 ArrayList<Comparable>。这里是:
public static ArrayList<Comparable> insertionSort(ArrayList<Comparable>
input) {
Comparable temp;
ArrayList<Comparable> result;
result = (ArrayList<Comparable>) input.clone();
if (result.size() > 1) {
for (int k = 1; k < result.size(); k++) {
for (int j = 1; j <= k; j++) {
if (result.get(k - j).compareTo(result.get(k - j + 1)) >0){
temp = result.get(k - j + 1);
result.set(k - j + 1, result.get(k - j));
result.set(k - j, temp);
}
}
}
}
return result;
}
在我的程序的其他地方,我定义了实现 Comparable 接口的 DVD 对象,创建了一堆,并将它们存储在一个名为 members 的 ArrayList<DVD> 中。现在,当我尝试像这样对成员进行排序时:
members = (ArrayList<DVD>) YaSort.insertionSort(members);
我收到以下错误:线程“main”中的异常 java.lang.ClassCastException: [Ljava.lang.Comparable; 无法投射到 [LDVD;
我该如何解决这个问题?谢谢你的时间。