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

输出为

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

总结

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

相关推荐
stark张宇2 小时前
Go语言runtime全景图:从编译到GC,带你彻底吃透Go的底层血脉
后端·go
IT_陈寒2 小时前
Redis的DEL命令居然没删干净数据?这个坑我爬了半天
前端·人工智能·后端
程序员小八7772 小时前
Java 快速转 Go
java·python·golang
职场的momo2 小时前
11个后端与AI岗位同时开放:Java、网关、推理优化怎么匹配
java·开发语言·人工智能
罗超驿2 小时前
SpringMVC 请求参数接收详解|单个参数、多参数、对象参数、@RequestParam参数重命名
java·后端·postman·javaee
__zRainy__3 小时前
Node系列 · ORM:Sequelize 简介
数据库·后端·node.js
AskHarries3 小时前
OpenClaw 如何查看历史对话和响应时间?
后端
n8n3 小时前
Spring Boot 3.2+ 新特性、Spring AI 核心架构与 API Key 安全管理技术文档
后端
古法安卓3 小时前
Android-epoll原理详解
android·java·android studio