2014-07-04 22 views
0

我有一個包含Component元素的數組。我可以使用一個特定的元素(例如array [0])並將其轉換爲JMenuItem。但我不能用投影數組(組件到JMenuItem)不起作用

投,整個陣列
newArray = (JMenuItem[]) componentArray; 

有誰知道,爲什麼它有一個單一的元素,但不完整的陣列的工作? 我需要轉換數組以訪問JMenuItems - 我無法從組件獲取對象的名稱。

希望有人瞭解我,並可以幫助我!

+0

因爲這是一個向下轉換,除非陣列確實是一個'的JMenuItem []'陣列它不會工作在陣列。 –

回答

1

如果你創建了Component陣列有點如下投將無法正常工作,並會給你一個ClassCastException

Component[] componentArray = new Component[10]; 

,但如果你創建如下,你不會得到一個例外:

Component[] componentArray = new JMenuItem[10]; 

但是,如果你仍然想使用第一個,也得到JMenuItem數組,你可以做到這一點,如下所示:

JMenuItem[] newArray = java.util.Arrays.copyOf(componentArray, componentArray.length, JMenuItem[].class); 

以下是完整的示例代碼:

Component[] c = new Component[10]; 
    for(int i=0;i<10;i++) 
    { 
     c[i] = new JMenuItem(""+i); 
    } 
    JMenuItem j[] = java.util.Arrays.copyOf(c, c.length, JMenuItem[].class); 
+0

作品完美!謝謝! – user3649938

+0

@ user3649938請接受是作爲答案,然後點擊勾號。 :) –