强制转换数组(组件到 JMenuItem)不起作用



我有一个包含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);

相关内容

  • 没有找到相关文章

最新更新