You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ObjectUtils.defaultIfNull重写空值判断的三元赋值语句

错误原因

你的现有代码会触发空指针异常:当entity.getThingType()为null时,ObjectUtils.defaultIfNull(entity.getThingType(), null)返回的结果是null,直接对null调用getTypeName()方法必然抛出空指针,和原三元表达式的逻辑不符。

正确重写方式

方案1:使用ObjectUtils.defaultIfNull实现

需要提前构造一个getTypeName()返回null的空ThingType实例作为默认值,避免空指针调用:

// 提前定义全局空实例,保证getTypeName()返回null
private static final ThingType EMPTY_THING_TYPE = new ThingType();

// 赋值逻辑
car.setName(ObjectUtils.defaultIfNull(entity.getThingType(), EMPTY_THING_TYPE).getTypeName());

方案2:Java 8+ 更简洁的Optional写法(工业场景更常用)

如果不强制要求必须用ObjectUtils.defaultIfNull,用Optional实现逻辑更直观,无需额外定义空实例:

car.setName(Optional.ofNullable(entity.getThingType())
        .map(ThingType::getTypeName)
        .orElse(null));

内容的提问来源于stack exchange,提问作者alexgmu49

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 13:03:01