有人可以告诉我为什么这种方法会抛出未经检查或不安全的异常吗?我理解当我尝试编辑列表时,我正在迭代...在下面,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只是原始数据,可以读入不同的变量。
tacticsMaster声明如下:
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>();
提前感谢您的帮助!
答案 0 :(得分:2)
您正在使用泛型类型的原始版本(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>();
答案 1 :(得分:0)
ArrayLists
的声明不是类型安全的。将其更改为:
private ArrayList<Tactics> currentGuardTactics = new ArrayList<Tactics>();
private ArrayList<Tactics> currentAdvanceTactics = new ArrayList<Tactics>();
private ArrayList<Tactics> currentRetreatTactics = new ArrayList<Tactics>()
您还应该让成员private
。 public
声明通常不是最佳实践方式。