2

谁能告诉我为什么这个方法会抛出未经检查或不安全的异常?我知道当我尝试编辑我正在迭代的列表时会发生这种情况......在下面,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>();

提前感谢您的帮助!

4

2 回答 2

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>();
于 2013-06-11T04:16:26.433 回答
0

你的声明ArrayLists不是类型安全的。将其更改为:

private ArrayList<Tactics> currentGuardTactics = new ArrayList<Tactics>();
private ArrayList<Tactics> currentAdvanceTactics = new ArrayList<Tactics>();
private ArrayList<Tactics> currentRetreatTactics = new ArrayList<Tactics>()

你也应该做成员privatepublic声明通常不是最佳实践方式。

于 2013-06-11T04:18:43.530 回答