作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是生成 NPE 的代码段,如果它还不足以让您了解可能出现的问题,请告诉我。
我有一个这样实例化的 map :
Map<Integer, Set<Long>> myMap = new HashMap<Integer, Set<Long>>();
我正在尝试执行以下操作:
long randomLong = methodReturnsRandomLong();
int randomInt = methodReturnsRandomInt();
if(myMap.isEmpty()) { // the map is empty at this point
myMap.put(randomInt, new HashSet<Long>());
myMap.get(randomInt).add(randomLong);
}
// Now I want to remove it
myMap.get(randomInt).remove(randomLong); // Here is what generates the NPE
我不明白是什么原因导致 NPE。我的猜测是使用 new HashSet<Long>()
在我的myMap.put()
内方法导致了它。但我并不完全确定。
最佳答案
发生这种情况是因为 map 可能不为空,但没有有 randomInt
值的条目。
您正在寻找的是:
//does a mapping exist for this specific value?
if(!myMap.containsKey(randomInt)){
myMap.put(randomInt, new Hashset<Long>());
myMap.get(randomInt).add(randomLong);
}
//now this value will be defined here.
myMap.get(randomInt).remove(randomLong);
调用map.isEmpty
只是检查不映射存在。您确实想知道 randomInt
值是否存在映射,而不是是否存在映射。
我知道你说 map 此时是空的,但我之前已经见过几次这个错误。这通常是类似情况的原因。
关于java - 难以跟踪 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18148106/
我想模拟这个函数: function getMetaData(key) { var deferred = $q.defer(); var s3 = vm.ini
我是一名优秀的程序员,十分优秀!