我在这一行有一个 NullPointerException
:
int qty = mSelectedBottles.get(bottleID);
我已经检查过
mSelectedBottles
和 bottleID
都不为空。mSelectedBottles
是 Hashmap<Integer, Integer>
类型,bottleID
是 int
类型 最佳答案
因为,将空值拆箱为原始数据类型。这里有足够的代码来自己重新创建 NullPointerException
int x;
HashMap<String,Integer> map = new HashMap<String,Integer>();
x = map.get("hello");
不存在的值的自动拆箱是问题所在。
我们知道引入自动装箱是为了使编码更容易,但它是一种明确的性能反模式,可能会导致像这样不直观的恼人错误。
就我个人而言,我总是尝试通过使任何此类调用显式来消除自动装箱,这样虽然代码有点难看,但也更清楚发生了什么。
在将其拆箱为原始 int 之前,您必须检查
mSelectedBottles.get(bottleID)
是否为 null来自 Java Performance News Letter