繁体   English   中英

Java HashMap Assignment的问题

[英]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的操作。 不可能的是_players2null因为你已经说过有效了。

所以,你需要_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM