我有一个包含Component
元素的数组。我可以取一个特定的元素(例如array[0])并将其转换为JMenuItem
。但是我不能使用
newArray = (JMenuItem[]) componentArray;
有谁知道,为什么它的工作与单个元素,而不是与完整的数组?我需要转换数组来访问JMenuItems——我无法从组件中获得对象的名称。
希望有人能理解我,可以帮助我!
如果您按照以下方式创建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);