Java HashMap分配问题
由于某些原因,我的项目中的此功能失败:Java HashMap分配问题,java,Java,由于某些原因,我的项目中的此功能失败: public void SetPlayersLineups(HashMap<Integer, Player> _players, ArrayList<Integer> _lineup, boolean isAwayTeam) { System.out.println(_players.get(2)); //works properly System.out.println(_players.get(2).
public void SetPlayersLineups(HashMap<Integer, Player> _players,
ArrayList<Integer> _lineup, boolean isAwayTeam) {
System.out.println(_players.get(2)); //works properly
System.out.println(_players.get(2).getNumberHits()); //null pointer exception
if (isAwayTeam) {
this.awayLineup = _lineup;
this.awayPlay = _players;
} else {
this.homeLineup = _lineup;
this.homePlay = _players;
}
}
/* from Player class */
public int getNumberHits() {
return this.hits;
}
public void setplayers阵容(HashMap\u玩家,
ArrayList(布林伊萨韦团队){
System.out.println(_players.get(2));//工作正常
System.out.println(_players.get(2.getNumberHits());//空指针异常
国际单项体育联合会(isAwayTeam){
this.awayLineup=\u队列;
this.awayPlay=\u玩家;
}否则{
this.homeLineup=\u-lineup;
this.homePlay=\u玩家;
}
}
/*从球员级别*/
public int getNumberHits(){
返回这个.hits;
}
我有一个Player类,其成员是get函数getNumberHits()。未正确设置this.awayPlay和this.homePlay属性。所以我调试了System.out.println语句。第一个正确返回一个播放器实例。但是当我调用get函数时,我得到一个空指针异常。有什么想法吗?好的,一次做一件事。首先,您要打印
\u players.get(2).getNumberHits()
并获取NPE。要么\u players.get(2)
返回null
,要么getNumberHits()
执行抛出NPE的操作。不可能的情况是\u players2
为null
,因为您已经说过这是有效的
因此,您需要检查正在传递的对象
\u players
有什么问题。我建议您尝试设置断点并使用IDE(例如Eclipse或Netbeans)分析对象如果命中
被声明为整数
且为空
,则此方法:
Integer hits; // default value of objects is null
public int getNumberHits() {
return hits;
}
将抛出NPE,因为该方法实际上编译为:
public int getNumberHits() {
return hits.intValue();
}
为点击次数指定一个值:
Integer hits = 0;
或者为hits
指定int
的类型,其默认值为0
,而不是null
:
int hits;
问题是hits为null,Java尝试将hits(即整数)自动装箱到int,并生成NullPointerException我将hits指定为整数属性声明:private int hits=0;