Установить элементы, добавленные в список, затем беспорядок - PullRequest
1 голос
/ 06 декабря 2011

Так что в основном у меня есть этот конструктор для класса League:

import java.util.*;

public class League {

    private String name;
    private List<Team> teamList;

    public League(String name) {        
        List<String> teamNames = new LinkedList<String>(Company.teamList);
        Collections.shuffle(teamNames);
        teamNames.subList(0, 5);

        for(int i = 0; i < teamNames.size(); i++){
            teamList.add(new Team(teamNames.get(i)));
        }
}
}

В классе Company, случается, есть Set, называемый teamList.Когда я вызываю System.out.println(teamNames.get(i)), он показывает мне содержимое, поэтому очевидно, что элементы набора присутствуют, однако когда я пытаюсь создать новый объект Team на основе элементов списка строк, он дает мне NullPointerException. Я не знаю, почему это?Помощь?

Вот код для класса Team на тот случай, если он вам нужен:

import java.util.HashMap;
import java.util.Map;


public class Team {

    protected Map<Integer, Player> teamPlayerMap;
    private String teamName;

    public Team(String name) {
        teamPlayerMap = new HashMap<Integer, Player>();
        teamName = name;
    }

    public String getTeamName() {
        return teamName;
    }


}

Ответы [ 3 ]

3 голосов
/ 06 декабря 2011

Я думаю, что проблема здесь:

private List<Team> teamList;

public League(String name) {        
    // etc...

    for(int i = 0; i < teamNames.size(); i++) {
        teamList.add(new Team(teamNames.get(i))); // This will throw!
    }
}

Вам необходимо создать экземпляр класса, который реализует List<Team>, и назначить его для teamList.Вы этого не сделали, поэтому при вызове teamList.add(...).

будет выдано NullPointerException. Исправление - написать вместо этого:

private List<Team> teamList = new ArrayList<Team>();
0 голосов
/ 06 декабря 2011

Проблема в том, что вы не создаете экземпляр teamList, я думаю.

0 голосов
/ 06 декабря 2011

Вы должны инициализировать teamList:

private List<Team> teamList = new ArrayList<Team>();
...