加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 内联条件语句的空指针异常

发布时间:2020-12-15 08:42:06 所属栏目:Java 来源:网络整理
导读:我得到了一个奇怪的空指针异常,我无法理解为什么.我用这个简单的测试代码缩小了它,它在第二行抛出一个NPE: Long test = null;Long result = true ? test : -1L; 虽然这段代码工作正常: Long result = true ? null : -1L; 这很容易通过不使用内联条件语句来
我得到了一个奇怪的空指针异常,我无法理解为什么.我用这个简单的测试代码缩小了它,它在第二行抛出一个NPE:

Long test = null;
Long result = true ? test : -1L;

虽然这段代码工作正常:

Long result = true ? null : -1L;

这很容易通过不使用内联条件语句来避免,但任何人都可以向我解释为什么会发生这种情况?

解决方法

我认为这归结为拆箱.以下代码将起作用:

Long two = true ? test : new Long(-1);

如果一个参数只是-1,那么它将尝试取消框测试,因此它将两者都视为相同的类型.取消装箱null将导致空指针异常.如果它在语句中特别为null,那么它将足够聪明,不会尝试取消装箱.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读