我得到ClassCastException。我正在跟蹤這個答案,但沒有得到正確的答案。 Cast Object to Generic Type for returning
BubbleSort.java返回一些值的泛型類方法
import java.util.ArrayList;
import java.util.List;
public class BubbleSort<T extends Number> {
public List<T> list;
@SuppressWarnings("serial")
public BubbleSort() {
list = new ArrayList<T>() {
};
}
public void add(T obj) {
list.add(obj);
}
public void sort() {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size() - 1; j++) {
if (list.get(j).intValue() > list.get(j + 1).intValue()) {
T swapElement = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, swapElement);
}
}
}
}
public <T> T getArray(Class<T> clazz){
T[] returnArray = (T[]) list.toArray();
return clazz.cast(returnArray);
}
}
MainPorgram.java
import java.lang.reflect.Array;
public class MainProgram {
public static void main(String args[]){
BubbleSort<Integer> bubbleSort = new BubbleSort<>();
bubbleSort.add(new Integer(1));
bubbleSort.add(new Integer(2));
bubbleSort.add(new Integer(6));
bubbleSort.add(new Integer(5));
bubbleSort.add(new Integer(4));
bubbleSort.add(new Integer(3));
Class<Integer[]> intArrayType = (Class<Integer[]>) Array.newInstance(Integer.TYPE, 0).getClass();
Integer[] sortedArray = (Integer[]) bubbleSort.getArray(intArrayType);
for(int i = 0 ; i < sortedArray.length; i++){
System.out.println(sortedArray[i]);
}
}
}
控制檯
異常在線程 「主要」 java.lang.ClassCastException:不能投 [Ljava.lang 。目的;爲[我在java.lang.Class.cast(來源不明)在 BubbleSort.getArray(BubbleSort.java:32)在 MainProgram.main(MainProgram.java:15)
_「並沒有得到它的權利」 _是不夠的。您需要發佈堆棧跟蹤,並指出程序中的哪一行會引發異常。同時告訴我們你已經做了什麼來解決問題。你是否在你的調試器中遍歷代碼? –
這裏有很多錯誤。 – shmosel
'(BubbleSort.java:32)'這意味着錯誤發生在BubbleSort.java的第32行。這是哪一行? –