拆箱与装箱可能会出现的坑
Posted 爱叨叨的程序狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拆箱与装箱可能会出现的坑相关的知识,希望对你有一定的参考价值。
拆箱与装箱可能会出现的坑
以Integer为例:
装箱时使用静态的valueOf()方法。
拆箱时使用非静态的xxxValue()方法。
try {
int count = (Integer) map.get("count");
} catch (NullPointerException e) {
// do something.
}
这样写为什么有可能出现空指针异常?
map.get("count")
根据key去获取map的value,有可能会获取到null
,null
可以转换为任何类型,于是得到一个声明为Integer类型的变量,该变量实际上指向空,Integer转向int,调用非静态方法(对象的方法)intValue,变量为空,那么就出现空指针异常。
测试代码
public static void main(String[] args) {
HashMap<String, Object> testInteger = new HashMap<>();
testInteger.put("right", 1);
testInteger.put("wrong", null);
Integer wrong = (Integer) testInteger.get("wrong");
int value = wrong.intValue();
System.out.println(value);
}
以上是关于拆箱与装箱可能会出现的坑的主要内容,如果未能解决你的问题,请参考以下文章