Java:建立有泛型的Collection陣列
最近遇到的問題,想將JMenuItem分成三類,每個類別要能動態增減,不過減得機率很少,所以建立了ArrayList帶有泛型的Collection陣列,不過卻不能直接的建立,該如何解決!? 關鍵詞: create array of java generic collection import java.util.ArrayList; import javax.swing.JMenuItem; /** 建立如何建立包函泛型的Collection陣列。 */ class ArrayOfGenericCollection { public static void main(String [] args) { // 最直覺的寫法,不過這個寫法是無法通過編譯的。 //ArrayList<JMenuItem> gat[] = new ArrayList<JMenuItem>[10]; // 下面的寫法是利用Java陣列的基本概念,加上轉型, // 不過因為動態轉型所以編譯帶有警告。 // 且執行時期因為Object無法轉成ArrayList,所以這樣也行不通。 //ArrayList<JMenuItem> gat2[] = (ArrayList<JMenuItem>[])new Object[10]; // 上面的寫法,既然無法將Object轉成ArrayList, // 那我們就建立一個不帶泛型標記的ArrayList // (有標記的就是一開始的寫法) // 編譯加執行成功!! ArrayList<JMenuItem> gat3[] = (ArrayList<JMenuItem>[])new ArrayList[10]; for (int i=gat3.length-1; i>=0; --i) gat3[i] = new ArrayList<JMenuItem>(5); System.out.println("gat3[1].size()="+gat3[1].size()); // 轉型少了泛型也是可以的,因為隱含轉型也合法。 // 同樣的,編譯加執行成功!! ArrayList