Java непроверенное исключение
Может кто-нибудь сказать мне, почему этот метод вызывает непроверенное или небезопасное исключение? Я понял, что это происходит, когда я пытаюсь отредактировать список, который я перебираю... в приведенном ниже, 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 ответа
Вы используете сырую версию универсального типа (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>();
Декларация вашего ArrayLists
не являются типобезопасными. Измените это на:
private ArrayList<Tactics> currentGuardTactics = new ArrayList<Tactics>();
private ArrayList<Tactics> currentAdvanceTactics = new ArrayList<Tactics>();
private ArrayList<Tactics> currentRetreatTactics = new ArrayList<Tactics>()
Вы должны сделать членов также private
, public
декларации, как правило, не лучший способ.