Java HashMap.get() returns null when I create a new instance of an object as a key
对于上面的链接,似乎HashMap
在地图中不存在键时返回null。但是,当我尝试:
Map<Integer,Integer> hs = new HashMap<Integer,Integer>();
int value = hs.get(1);
System.out.println(value);
它抛出:
Exception in thread "main" java.lang.NullPointerException
问题是什么?如何让Map
返回null而不是在这种情况下抛出异常?
答案 0 :(得分:10)
int
是一个原始的,并不支持null
值。你在那里的代码可以这样理解:
Integer temp = hs.get(1);
int value = temp.intValue();
^null^
由于此Integer temp
变量为null
,因此在对int
执行自动取消装箱时,您有一个NullPointerException
。
要避免此问题,请使用Integer
变量,而不是int
:
Map<Integer,Integer> hs = new HashMap<Integer,Integer>();
Integer value = hs.get(1);
System.out.println(value);