因此,基本上,我为类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恰好有一个称为SetteamList
当我调用System.out.println(teamNames.get(i))时,它很明显地显示了内容的集合,但是当我尝试基于字符串列表的元素创建一个新的Team对象时,它给了我一个。我不知道为什么救命?

如果需要,下面是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;
    }


}

最佳答案

我认为问题出在这里:

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。您尚未执行此操作,因此在调用NullPointerException时它将抛出teamList.add(...)

解决方法是改成这样:

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

07-24 20:21