Java未经检查的异常

时间:2013-06-11 03:57:46

标签: java unchecked-exception

有人可以告诉我为什么这种方法会抛出未经检查或不安全的异常吗?我理解当我尝试编辑列表时,我正在迭代...在下面,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>();

提前感谢您的帮助!

2 个答案:

答案 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>()

您还应该让成员privatepublic声明通常不是最佳实践方式。