因此,基本上,我为类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
对象时,它给了我一个。我不知道为什么救命?如果需要,下面是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>();