我試圖訂購一個二叉搜索樹,並將其值存儲在一個數組上,但是當我嘗試將我的ArrayList轉換爲數組時,它說我無法將一個對象轉換爲Comparable。不能將對象轉換爲可比較
@Override
public T[] postOrder() {
ArrayList<T> array = new ArrayList<T>();
postOrder(root, array);
return (T[]) array.toArray();
}
private void postOrder(BSTNode<T> currRoot, ArrayList<T> array) {
if (currRoot == null)
return;
if (!currRoot.getLeft().isEmpty())
postOrder((BSTNode<T>) currRoot.getLeft(), array);
if (!currRoot.getRight().isEmpty())
postOrder((BSTNode<T>) currRoot.getRight(), array);
array.add(currRoot.getData());
}
錯誤消息: 異常在線程 「主要」 java.lang.ClassCastException:[Ljava.lang.Object;不能轉換爲[Ljava.lang.Comparable;
編輯:解決這樣
public T[] postOrder() {
ArrayList<T> array = new ArrayList<T>();
postOrder(root, array);
return array.toArray((T[]) Array.newInstance(root.getData().getClass(), size()));
}
大詳細的說明,但沒有解決......我的是相反的:) – TWiStErRob 2014-12-06 21:48:07
@TWiStErRob的OP使用'@ Override'所以他們顯然已經」 t改變方法簽名。我個人並不確定要告訴他們什麼。 – Radiodef 2014-12-06 21:49:10
我在我的代碼中使用了@ @ Override,但我也定義了接口。即使他不能修改接口,也可以像引用的問題那樣在構造函數中傳入'Class'實例! –
TWiStErRob
2014-12-06 21:51:47