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;