我在創建一個數組來包含我的自定義對象數組時遇到了麻煩。創建一個自定義對象數組的數組
我要創建的容器作爲可比較陣列的標準陣列出於多種原因:
- 包含在每個自定義對象陣列必須具有不同的長度
- 自定義對象陣列具有自動排序工具內置不適用於我希望它們適合的較大的包含陣列
自定義對象數組的工作原理已經過徹底測試。
I接收durring較大對象的創建唯一的例外是:
異常在線程 「主要」 java.lang.ClassCastException:
[Ljava.lang.Comparable;不能轉換爲[LSortedFixedCircularArray;
這裏是適用的代碼
//From SortedFixedCircularArray.java
public class SortedFixedCircularArray<E extends Comparable<E>>
{
SortedFixedCircularArray(int fixed_capacity_in)
{
data = newArray(fixed_capacity_in);
front = 0;
rear = 0;
size = 0;
capacity = data.length;
}
@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
return (E[]) new Comparable[size];
}
}
//From CCArray.java
public class CCArray <E extends Comparable<E>>
{
private SortedFixedCircularArray<E>[] data;
private long size;
private long capacity;
private final static long DEFAULT_CAPACITY = 15;
CCArray()
{
this(DEFAULT_CAPACITY);
}
@SuppressWarnings("unchecked")
CCArray(long initial_capacity)
{
int height = getIndices(initial_capacity)[0]+1;
height *= 2;
//!THIS IS THE PROBLEM LINE!
data = (SortedFixedCircularArray<E>[]) new Comparable[height]; //Unchecked Casting
int temp = (height/2)-1;
patternInit(temp);
capacity = initial_capacity;
size = 0;
}
private void patternInit(int height_in)
{
//initialize the individual arrays here
}
private int[] getIndices(long index)
{
//Return int[] with i&j indices
}
}
我假設的Java看到這個對象數組作爲對象,而不是一個對象陣列。我認爲這是一種鋸齒狀數組,但如上所述,它不能由與導致其他問題相同類型的數組組成。請幫忙。
您創建了一個「Comparable」數組,但您將其轉換爲'E'。 'E'和'Comparable'不一樣,所以這沒有意義。 –
我同意我的方法有點無意義,但我正在抓秸稈。我已經成功地瘋狂使用數組和泛型這樣的單維結構,所以對我來說,理由是我應該能夠創建類似的多維結構。 – Mikeologist
你的'CCArray'代表一個'E [] []'。那麼爲什麼不直接使用它呢?此外爲什麼不使用集合?不,沒有真正的理由使用泛型作爲數組。 –