我不确定这是不是重复(可能是),但我无法找到我正在寻找的东西。
我有一个静态ArrayList,用于保存从该类中的构造函数创建的对象,或者任何扩展它的类:
public static ArrayList<Person> PersonList = new ArrayList<>();
public Constructor(....){
PersonList.add(this);
}
现在我尝试使用索引删除此arraylist中的对象,但我得到ArrayIndexOutOfBounds: Array index out of range:
(索引)。
现在我知道这个错误告诉我指定的位置没有元素,但是我不明白为什么PersonList.size()返回4(如果列表中有4个元素)。
我是java的新手,所以我希望这里有人可以帮助我。这是代码:
list.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
if(SwingUtilities.isRightMouseButton(arg0)) {
try {
Person.PersonList.remove(list.getSelectedIndex());
list.remove(list.getSelectedIndex());
}catch (Exception e) {
System.out.println(e);
}
System.out.println("Index: " + list.getSelectedIndex());
updateData();
}
}
});
答案 0 :(得分:0)
我对此感到困惑:
public Constructor(....){
PersonList.add(this);
}
看起来每次创建该类的新对象(我假设的人),您都要将其添加到类变量列表中。我假设每次创建该类的新实例时,它都会重置全局列表。你能确认PersonList
并不总是大小= 1吗?我怀疑它是,所以将该列表移到另一个班级
答案 1 :(得分:0)
好的,经过一段时间的测试后,似乎它的工作原理完全没问题。它会抛出一个错误告诉我它超出范围,但在每次删除后更新.size()
后,它会减少。
虽然我不知道为什么它会起作用,如果它告诉我它没有?