我正在尝试使用Java HashMap
。使用map.get("A")
从地图获取密钥的值会产生NullPointerException
。然后我使用if(map.get("A"))
来避免抛出NullPointerException
,但无论如何它都会被抛出。
我做错了什么?
答案 0 :(得分:3)
我已经回答了我自己的问题。我以前常常检查
if(map.containsKey("A"))
String b = map.get("A")
而不是
if(map.get("A") != null)
map.get("A")
这将有助于我避免空指针异常
答案 1 :(得分:2)
好吧,你可能没有实例化map
对象本身。
在访问map
之前尝试此操作:
Map map = new HashMap();
后来:
map.put("A", "someValue");
if(map.get("A") != null){/*your code here*/}
答案 2 :(得分:1)
有两个可能的问题:
map
本身就是null
,因为您从未初始化它。
map
被声明为Map<String, Boolean> map
。如果是这种情况,那么您的if
语句不会按照您的想法执行。它实际上从地图中获取Boolean
对象,并尝试将其解包为基元bool
。如果密钥"A"
没有值,那么您将获得NullPointerException
。解决此问题的方法是更改if
声明:
Boolean b = map.get("A");
if (b != null && b)
...
请注意,您必须明确与null
进行比较。
答案 3 :(得分:0)
首先通过
检查地图是否为空 map != null
然后检查地图包含该键,
map.containsKey("A")
完全可以按以下方式检查,
if(map!=null && map.containsKey("A")){
if(map.get("A") != null){
System.out.println(map.get("A"));
\\ value corresponding to key A
}
}