的名單如何去除:通用陣列
類型安全:類型的表達 列表[]需要選中轉換爲符合
List<Object>[]
編譯器警告有以下表現:
List<Object>[] arrayOfList = new List[10];
的名單如何去除:通用陣列
類型安全:類型的表達 列表[]需要選中轉換爲符合
List<Object>[]
編譯器警告有以下表現:
List<Object>[] arrayOfList = new List[10];
據我所知的唯一方式是使用@SuppressWarnings("unchecked")
。至少如果你想避免馬修回答中出現的原始類型警告。
但是你應該重新考慮你的設計。一個列表數組?這真的有必要嗎?爲什麼不列出清單?如果它變得太複雜(List of List of List of List),使用自定義數據類型。這確實使代碼更具可讀性。
作爲一個無關的方面說明:你應該寫List<Object>[] arrayOfList
。括號是類型的一部分,而不是變量。
List arrayOfList[] = new List[10];
或
List[] arrayOfList = new List[10];
您不能在Java中使用泛型數組,因此沒有理由對其進行引用。它不會是類型安全的,因此是警告。當然,您正在使用<Object>
,這意味着您的列表旨在包含任何對象。但是無法使通用數組仍然適用。
另外,請注意,上面的第二個版本(與[]附加到該類型)在Java中通常被認爲是更好的樣式。它們在語義上是等效的。
有多種方式:
List[] arrayOfList = new List[10];
通知,在Java中在聲明時,通常在類型後面加上[],而不是變量 - 儘管Sun會阻止使用原始類型,因爲它們可能會在未來的版本中被刪除。List<List<Object>> listOfList = new ArrayList<List<Object>>;
如果沒有編譯器警告,您無法做任何變化。泛型和數組不會很好。雖然你可以用
@SuppressWarnings("unchecked")
final List<Object> arrayOfList[] = new List[10];
不幸的是壓制它,由於使用type erasure的事實,泛型在Java中實現,你不能與類型參數創建一個類型的數組:
// This will give you a compiler error
List<Object>[] arrayOfList = new ArrayList<Object>[10];
見this在Angelika Langer的Java Generics常見問題的詳細解釋。
您可以刪除泛型和使用原始類型,馬修·富蘭琛表示,或使用的不是數組集合類:
List<List<Object>> data = new ArrayList<List<Object>>();
-1。我的代碼編譯,因爲我在這裏實例化一個數組而不是一個列表。 – 2010-08-04 07:46:53
好吧,你是對的。我的錯。編輯anwer。但這裏要理解的重要一點是,你不能創建一個參數化類型的數組。 – Jesper 2010-08-04 07:50:40