前几天开发时,碰到一个空指针反常。代码如下

依据反常信息,是
long value = map.get(2L);
时抛出了空指针反常。剖析进程如下。A8站源码交易平台
1,自己首要想到的是map是否为空。由于map是new出来的,所以不行能为null。
2,然后自己又想到了莫非从map中获取不存在的key时会报空指针反常?也不应该呀,假如key不存在,get会回来null,然后程序应该输出null才对。
后来,通过粉析,发现这里边还有一个主动拆箱的进程。正是这个进程,才导致了空指针反常。
Map的value的类型是Long,它是long的包装类。map.get(2L),会回来null。正常来讲,Long value = map.get(2L);的写法时,value即可被赋值为null。可是,如上面的代码所示,value被界说成了long,而非Long,那么,就会将从map中得到的null进行主动拆箱,所以导致了空指针反常。