Hashmap的get方法中的NullPointerException

时间:2014-03-31 07:09:34

标签: java

我在这一行有一个NullPointerException

 int qty = mSelectedBottles.get(bottleID);

我已检查过mSelectedBottlesbottleID都是空的。

mSelectedBottles的类型为Hashmap<Integer, Integer>bottleID的类型为int

1 个答案:

答案 0 :(得分:10)

因为,将null值取消装箱到原始数据类型。这里有足够的代码来重新创建NullPointerException你自己

int x;
HashMap<String,Integer> map = new HashMap<String,Integer>();
x = map.get("hello");

不存在值的自动取消装箱是问题。

我们知道自动装箱是为了使编码更容易,但它是一种明确的性能反模式,并且可能导致像这样的非常直观的烦恼。

就个人而言,我总是试图通过明确地进行任何此类调用来删除自动装箱,这样虽然代码有点丑陋,但它也更清楚发生了什么。

在将其取消装箱到原始int

之前,您必须检查mSelectedBottles.get(bottleID)是否为空

来自Java Performance News Letter