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

输出为

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

总结

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

相关推荐
YangYang9YangYan2 小时前
2026 校招审计风控岗位 JD 拆解,工具、专业能力与面试考点
java·大数据·人工智能·数据分析
wuminyu7 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
怕浪猫8 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
GreenTea9 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
考虑考虑9 小时前
Java实现hmacsha256加密算法
java·后端·java ee
captain3769 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
MetaLite9 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
Co_Hui9 小时前
Java 线程状态
java
凤山老林9 小时前
聊聊企业级 API 安全:Spring Boot 落地 OAuth 2.1、mTLS 与接口签名防篡改
spring boot·后端·安全·oauth
土司大王10 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode