谁能告诉我为什么这个方法会抛出未经检查或不安全的异常?我知道当我尝试编辑正在迭代的列表时会发生这种情况...在下面, currentAdvanceTactics 等根本没有被迭代。
public void tacticMeetsRequirements(ArrayList<Tactics> master) {
for (Tactics a : master) {
if (meetsrequirements(a)) {
if (a.movement.equals("Advance")) {
currentAdvanceTactics.add(a);
} else if (a.movement.equals("Retreat")) {
currentRetreatTactics.add(a);
} else if (a.movement.equals("Guard")) {
currentGuardTactics.add(a);
}
}
}
}
这是主列表中使用的对象的创建方式:
for (int b = 0; b < numberoftactics; b++) {
tactic[b] = new Tactics(parsedTactics[b]);
tacticsMaster.add(tactic[b]);
}
parsedTactics 只是读取到不同变量中的原始数据。
战术大师声明如下:
public ArrayList<Tactics> tacticsMaster;
然后当我创建它所包含的对象时:
this.tacticsMaster = new ArrayList<Tactics>();
currentAdvanceTactics 列表等都是这样创建的:
public ArrayList currentGuardTactics = new ArrayList<Tactics>();
public ArrayList currentAdvanceTactics = new ArrayList<Tactics>();
public ArrayList currentRetreatTactics = new ArrayList<Tactics>();
预先感谢您的帮助!
最佳答案
您正在使用通用类型的原始版本 ( ArrayList<T>
)。这就是您收到警告的原因。
public ArrayList currentGuardTactics = new ArrayList<Tactics>();
public ArrayList currentAdvanceTactics = new ArrayList<Tactics>();
public ArrayList currentRetreatTactics = new ArrayList<Tactics>();
尝试使用参数化版本 -
public List<Tactics> currentGuardTactics = new ArrayList<Tactics>();
public List<Tactics> currentAdvanceTactics = new ArrayList<Tactics>();
public List<Tactics> currentRetreatTactics = new ArrayList<Tactics>();
关于Java 未检查异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036269/