[英]Set elements added to List, then mess
所以基本上我有这个类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
碰巧有一个名为teamList
的Set
。 当我调用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;
}
}
我认为问题在于:
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>();
您必须初始化teamList:
private List<Team> teamList = new ArrayList<Team>();
问题是因为你没有创建teamList的实例我认为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.