Java三元表达式注意

前言

遇到一个三元表达式问题,抛出空指针异常,原因在于三元表达式拆箱

三元表达式拆箱

问题复现

程序执行到这一步

csharp 复制代码
devBaseVO.getOnlineStatus() 为null

这个时候,抛了空指针异常 该枚举类为

问题分析

三元表达式遇到前面是基本类型时,会拆箱,如果前面是引用类型,就不会拆箱

问题复现

ini 复制代码
import java.util.Objects;

public class HelloDemo {

    static void main() {
        User user = new User();
//        user.setA(null);
        String a = "1";
        int c = 1;
        Integer b = Objects.equals(a, "2") ? c : user.getA();
        System.out.println(b);
    }
}

输出

原因在于引用类型拆箱了

ini 复制代码
import java.util.Objects;

public class HelloDemo {

    static void main() {
        User user = new User();
//        user.setA(null);
        String a = "1";
        Integer c = 1;
        Integer b = Objects.equals(a, "2") ? c : user.getA();
        System.out.println(b);
    }
}

输出为

前面是引用类型,就不会拆箱

总结

使用三元表达式引用类型和基本类型注意拆箱问题

相关推荐
特立独行的猫A5 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
码事漫谈8 小时前
我花了一周时间,看AI公司怎么"管"AI,结果越看越后背发凉
后端
爱学习的程序媛11 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
GISer_Jing11 小时前
Agent核心内容
后端·ai·langchain
budingxiaomoli12 小时前
Spring统一功能处理
java·后端·spring
某鹏13 小时前
网关选型:Go、Java、Graal 谁都不能完胜
后端
用户02478365309713 小时前
从屎山到防线:14 行状态迁移表,给任务系统装上防瞎跳闸门
后端
CQU_JIAKE13 小时前
11.13[体系结构】指标,五级流水线,八级流水线,虚实地址思考
后端
Flynn Liang13 小时前
可观测性与成本治理:一次对话的 17 个观测点
java·langchain·可观测性·micrometer·langchain4j·token 成本·llm 监控
金銀銅鐵14 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令
java·jvm