gpt4 book ai didi

java - 类转换异常 : ArrayList cannot be cast to

转载 作者:行者123 更新时间:2023-12-01 22:04:28 24 4
gpt4 key购买 nike

这是我收到的错误:

java.lang.ClassCastException: java.util.ArrayList cannot be cast to MenuComponent

这是给我带来麻烦的代码:

import java.util.ArrayList;
import java.util.Iterator;
public class Menu extends MenuComponent{
ArrayList menuComponents = new ArrayList();
String name;
String description;

public Menu() {
}

public Menu(String name, String description) {
super();
this.name = name;
this.description = description;
}

public void add(MenuComponent menuComponent) {
menuComponents.add(menuComponents);
}

public void remove(MenuComponent menuComponent) {
menuComponents.remove(menuComponents);
}

public MenuComponent getChild(int i) {
return (MenuComponent) menuComponents.get(i);
}

public String getName() {
return name;
}

public String getDescription() {
return description;
}

public void print() {
System.out.println(getName());
System.out.print("---" + getDescription());
System.out.println("---");

Iterator iterator = menuComponents.iterator();
while(iterator.hasNext()) {
MenuComponent menuComponent = (MenuComponent) iterator.next();
menuComponent.print();
}
}

public Iterator createIterator() {
return new CompositeIterator(menuComponents.iterator());
}
}

导致错误的问题在这一行:

MenuComponent menuComponent = (MenuComponent) iterator.next();

我尝试过搞乱它,但没有运气。非常感谢任何提示。

最佳答案

这就是使用 ArrayList 的原始类型的缺点,如果你犯了一个简单的错误,你不会注意到。你应该声明 ArrayListArrayList<MenuComponent> menuComponents 。然后你会注意到,在你的方法 add(MenuComponent menuComponent) 中您总是将 arrayList 添加到 arrayList,因为您犯了一个简单的拼写错误。

应该是menuComponents.add(menuComponent);而不是menuComponents.add(menuComponents); 。同样的问题也会出现在您的删除方法中。

关于java - 类转换异常 : ArrayList cannot be cast to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33036053/

24 4 0