2012-10-05 69 views
0

首先我是Java新手,經驗很少。java聲明一個通用數組

在I類具有以下屬性

private List<Arc> arcs[]; // an array of a List of type Arc 

在類的構造函數中我試圖將其初始化:

@SuppressWarnings("unchecked") 
arcs = new List[500]; 

,但它不會編譯。我一直在試圖找出如何初始化這種類型的數組,我看到使用Array.newinstance,我不明白。

感謝您的幫助

解決方案:

弧=新名單[500];

+0

嗯,你的變量是一種嚴重命名...的弧列表應該叫弧,你有名單的數組,就是你真的打算?否則我會稱之爲arcLists(因爲我沒有辦法將它與現實世界綁在一起,並稱之爲「arcDealership」或更多的用法) –

+0

'Lista'!='List ' – Magicode

+0

@JeffWatkins是我想要的是一個列表數組。我如何聲明 – Alessandroempire

回答

3

使用此:

arcs = new List[500]; 

但不是 「利斯塔」。

恐怕在這裏你的問題只是一個錯字...

+2

第一條語句不會編譯。 – assylias

+0

@assylias你是對的...哎呀... –

+0

工作,謝謝 – Alessandroempire

0

你似乎在這裏混的事情。

如果你需要的是一個一維數組,你可以使用列表或數組,但不能同時:

List<Arc> list = new ArrayList<Arc>(); 
    list.add(new Arc()); 

    Arc[] array = new array[1]; 
    array[0] = new Arc(); 

除非你真的需要陣列的列表(二維結構),但它似乎並非如此。

編輯

根據您發表評論,你想列表的數組,這將是這樣的:

List<Arc>[] listOfArrays = new List[500]; //you can't easily mix arrays and generics 
List<Arc> list = new ArrayList<Arc>(); 
list.add(new Arc()); 
listOfArrays[0] = list; 

PS:你也可以使用一個列表的列表:

List<List<Arc>> listOfLists = new ArrayList<List<Arc>>(); 
List<Arc> list = new ArrayList<Arc>(); 
list.add(new Arc()); 
listOfLists.add(list); 
+0

我需要每個「盒子」,陣列的每個位置有一個列表。 – Alessandroempire

+0

@Alessandroempire查看我的編輯。 – assylias

+0

是的,這是我的建議。傻我。還在學習的時候。謝謝您的幫助 – Alessandroempire

0

理想情況下,爲了避免警告您會使用列表清單

List< List<Arc>> arcLists = new ArrayList< List<Arc>>(); 

當然,在Java 7中,通過類型推斷可能會看起來更清晰。

如果你一意孤行陣列,使用

arcs = (ArrayList<Arc>[]) new ArrayList[500]; 
0

你不能做你想做的,因爲數組包含約其組件類型的運行時信息來源。泛型不。所以要創建一個數組,你必須知道類型,這意味着在這種情況下你不能使用泛型。

這就是爲什麼代碼List<Arcs>[] arcs有效且new ArrayList<Arcs>[500]不是。

同樣的錯誤,你會得到時,你會嘗試做這樣的事情(T是通用)

T[] genericArray = new T[]; 

錯誤編譯失敗是:Cannot create a generic array

要avoit它,你可以創建類似這樣的:

List<Arcs>[] arcs = new ArrayList[500];

但thsi不是類型安全的,有一個類型保存解決方案,您應該我們Ë下面的代碼:

List<List<Arcs>> lista = new ArrayList<List<Arcs>>();