我试图使用Java HashMap
。 使用map.get("A")
以获得一个关键的值从地图上导致了NullPointerException
。 然后我用if(map.get("A"))
以避免NullPointerException
被抛出,但这样做的反正抛出。
我究竟做错了什么?
我试图使用Java HashMap
。 使用map.get("A")
以获得一个关键的值从地图上导致了NullPointerException
。 然后我用if(map.get("A"))
以避免NullPointerException
被抛出,但这样做的反正抛出。
我究竟做错了什么?
我已经回答我的问题。 我已经使用检查
if(map.containsKey("A"))
String b = map.get("A")
而不是
if(map.get("A") != null)
map.get("A")
这会帮助我避免空指针异常
嗯,你可能没有实例化map
对象本身。
访问前,试试这个map
:
Map map = new HashMap();
然后:
map.put("A", "someValue");
if(map.get("A") != null){/*your code here*/}
有两个可能的问题:
map
本身是null
,因为你从来没有初始化它。
map
被声明为Map<String, Boolean> map
。 如果是这种情况,那么你if
语句不会做你认为它。 它实际上得到的Boolean
从地图对象,并尝试将其拆箱到原始的bool
。 如果没有与该键的值"A"
,那么你会得到一个NullPointerException
。 解决这个问题的办法是改变你if
语句:
Boolean b = map.get("A"); if (b != null && b) ...
请注意,你必须明确地与比较null
。
首先,检查地图是否为空或不
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
}
}