从TreeMap获取Integer并分配给int时出现NullPointerException

时间:2015-03-04 16:01:38

标签: java dictionary

我是否正确地假设这两个示例是从TreeMap获取并尝试将结果分配给基本int时将抛出NullPointerException的唯一示例?

TreeMap<BigDecimal, Integer> map = new TreeMap<>();

BigDecimal b = null;
int a = map.get(b);

BigDecimal bb = new BigDecimal("1"); //non existant key
int aa = map.get(bb);

我假设地图可以由于非存在键而返回null,然后由于隐式.intValue()自动取消装箱而引发异常 - 或者因为get参数本身为null而抛出异常。

1 个答案:

答案 0 :(得分:4)

至少有5个理由可以int a = map.get(b);抛出NullPointerException

  1. map == null
  2. b == nullmap不支持null个密钥。
  3. map.containsKey(b) == false
  4. map.containsKey(b) == truemap.get(b) == null
  5. Comparator使用的compareTomap方法因其他原因引发了NPE。