[英]Issue with Java HashMap Assignment
出于某种原因,我的项目中的这个功能失败了:
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;
}
我有一个Player类,其成员获取函数getNumberHits()。 未正确设置this.awayPlay和this.homePlay属性。 所以我使用System.out.println语句进行了调试。 第一个正确返回一个Player实例。 但是当我调用get函数时,我得到一个空指针异常。 有任何想法吗?
好的,一次一件事。 首先,你打印_players.get(2).getNumberHits()
并获得一个NPE。 _players.get(2)
返回null
,或者getNumberHits()
执行抛出NPE的操作。 不可能的是_players2
是null
因为你已经说过有效了。
所以,你需要_players
你传递的对象_players
有什么问题。 我建议你尝试设置断点并用IDE分析对象(例如Eclipse或Netbeans)
如果hits
声明为Integer
且为null
,则此方法为:
Integer hits; // default value of objects is null
public int getNumberHits() {
return hits;
}
因自动取消装箱而将抛出NPE,因为该方法实际编译为:
public int getNumberHits() {
return hits.intValue();
}
为hits
分配值:
Integer hits = 0;
或者给出hits
int
的类型,其默认值为0
,而不是null
:
int hits;
问题是hits为null,并且Java尝试将autobox命中(Integer)命中为int,并产生NullPointerException
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.