如何使用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
相关产品推荐
相关产品推荐

