我是否正确地假设这两个示例是从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而抛出异常。
答案 0 :(得分:4)
至少有5个理由可以int a = map.get(b);
抛出NullPointerException
map == null
b == null
和map
不支持null
个密钥。map.containsKey(b) == false
map.containsKey(b) == true
和map.get(b) == null
Comparator
使用的compareTo
或map
方法因其他原因引发了NPE。