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