删除对象时发生意外类型错误
Unexpected type error while deleting an object
我有一个 EnemyVehicle 对象的 ArrayList。它的名字是敌人。当我尝试删除 EnemyVehicle class 的对象时,就像在 question 中一样,我收到意外的类型错误:
required: valuable
found: value
这是我的代码:
private void enemiesTurn()
{
for(int i = 0; i<enemies.size(); i++)
{
if(enemies.get(i).isDestroyed())
{
enemies.add(getNewRandomVehicle(difficulty));
p1.setScore(p1.getScore() + 20);
enemies.get(i) = null;
}
}
}
我能做什么?
而不是 enemies.get(i) = null;
做 enemies.remove(enemies.get(i));
编辑:这是因为 enemies.get(i)
是一个值,而不是一个变量,您不能在操作的左侧使用它。操作的左侧必须以某种方式包含变量。
当您从 ArrayList 或任何列表类型中删除内容时。你应该使用迭代器。
for (Iterator<ClassName> it = enemies.iterator(); it.hasNext();) {
ClassName objectName = it.next();
if(objectName.isDestroyed()) {
enemies.add(getNewRandomVehicle(difficulty));
p1.setScore(p1.getScore() + 20);
it.remove();
}
}
我有一个 EnemyVehicle 对象的 ArrayList。它的名字是敌人。当我尝试删除 EnemyVehicle class 的对象时,就像在 question 中一样,我收到意外的类型错误:
required: valuable
found: value
这是我的代码:
private void enemiesTurn()
{
for(int i = 0; i<enemies.size(); i++)
{
if(enemies.get(i).isDestroyed())
{
enemies.add(getNewRandomVehicle(difficulty));
p1.setScore(p1.getScore() + 20);
enemies.get(i) = null;
}
}
}
我能做什么?
而不是 enemies.get(i) = null;
做 enemies.remove(enemies.get(i));
编辑:这是因为 enemies.get(i)
是一个值,而不是一个变量,您不能在操作的左侧使用它。操作的左侧必须以某种方式包含变量。
当您从 ArrayList 或任何列表类型中删除内容时。你应该使用迭代器。
for (Iterator<ClassName> it = enemies.iterator(); it.hasNext();) {
ClassName objectName = it.next();
if(objectName.isDestroyed()) {
enemies.add(getNewRandomVehicle(difficulty));
p1.setScore(p1.getScore() + 20);
it.remove();
}
}