将数组(Component to JMenuItem)转换为不起作用

时间:2014-07-04 14:56:41

标签: java arrays casting

我有一个包含Component个元素的数组。我可以使用一个特定元素(例如array [0])并将其转换为JMenuItem。但是我不能使用

来转换完整的数组
newArray = (JMenuItem[]) componentArray;

有谁知道,为什么它使用单个元素但不使用完整的数组? 我需要转换数组来访问JMenuItems - 我无法从组件中获取对象的名称。

希望有人了解我并能帮助我!

1 个答案:

答案 0 :(得分: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);