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;にキャストできません。
どうすればこれを解決できますか?御時間ありがとうございます。