空检查映射获取空指针异常

时间:2014-10-25 06:07:28

标签: java nullpointerexception hashmap

我正在尝试使用Java HashMap。使用map.get("A")从地图获取密钥的值会产生NullPointerException。然后我使用if(map.get("A"))来避免抛出NullPointerException,但无论如何它都会被抛出。

我做错了什么?

4 个答案:

答案 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)

有两个可能的问题:

  1. map本身就是null,因为您从未初始化它。

  2. 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
   }
}