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);
    }
}

输出为

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

总结

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

相关推荐
Mk598783 分钟前
给 Agent 装上对话框 —— AgentScope-Java 接入 Spring Boot 与 SSE 流式实战
后端
付威20234 分钟前
从 Loop 到 Runtime:rpi Agent Loop 与 Cordis 的边界、取舍与组合
后端
IT_陈寒7 分钟前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
paopaokaka_luck19 分钟前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280435 分钟前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑1 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔2 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节
yuniko-n2 小时前
【JUC】四种内存屏障示例
java·1024程序员节
Mia_墨黎2 小时前
2026 Windows 11 终端美化完全指南
前端·后端