1、先看一个程序
boolean condition = false;
Integer aa = 1;
Integer cc = condition ? aa : getInt();
public static Integer getInt() {
return null;
}
以上代码没问题。
但是如果这里将aa改成 int aa =1;
再次运行 就会抛异常NullPointerException
因为变量 cc aa 和方法 getInt 的类型不一致,这里就是存在拆箱的问题
通过反编译代码
可以发现编译以后的代码变成如下这个样子
Integer cc = Integer.valueOf(condition ? 1 : getInt().intValue());
即是 对getInt()进行拆箱。
(至于如何反编译代码、请下载jd-gui.jar 然后把编译完成的class文件拖进去 打开即可)
获取源码, 请参考作者置顶的文章。
文章编码 u5zq