java实现处理对象不为空则返回,为空则继续
在Java中有多种方法可以处理对象不为空则返回,为空则继续的逻辑。以下是几种常见的实现方式:
1. 传统 if-else 方式
public Object processObject(Object obj) {
if (obj != null) {
return obj;
}
// 继续执行其他逻辑
return doSomethingElse();
}2. 三元运算符(简单条件)
public Object getResult() {
Object obj = getPossibleNullObject();
return obj != null ? obj : getDefaultObject();
// 或者继续执行其他逻辑
}
3. 使用 Optional(Java 8+ 推荐)
import java.util.Optional;
public Object processWithOptional() {
return Optional.ofNullable(getPossibleNullObject())
.orElseGet(() -> {
// 对象为空时执行的逻辑
return getDefaultValue();
});
}
// 或者链式调用
public Object processChain() {
return Optional.ofNullable(getObject1())
.or(() -> Optional.ofNullable(getObject2()))
.orElse(getDefaultObject());
}4. 链式空值检查
public Object getFirstNonNull() {
Object obj1 = getObject1();
if (obj1 != null) return obj1;
Object obj2 = getObject2();
if (obj2 != null) return obj2;
Object obj3 = getObject3();
if (obj3 != null) return obj3;
return getDefaultObject();
}5. 实用工具方法
public class ObjectUtils {
public static <T> T getFirstNonNull(Supplier<T>... suppliers) {
for (Supplier<T> supplier : suppliers) {
T result = supplier.get();
if (result != null) {
return result;
}
}
return null;
}
// 使用示例
public void example() {
Object result = getFirstNonNull(
() -> getObject1(),
() -> getObject2(),
() -> getObject3()
);
}
}6. 在 Stream 中使用(Java 8+)
import java.util.stream.Stream;
public Object getFromStream() {
return Stream.of(getObject1(), getObject2(), getObject3())
.filter(obj -> obj != null)
.findFirst()
.orElse(getDefaultObject());
}7. 使用 Apache Commons Lang 或 Guava
Apache Commons Lang:
import org.apache.commons.lang3.ObjectUtils;
public Object getWithApache() {
return ObjectUtils.firstNonNull(
getObject1(),
getObject2(),
getObject3()
);
}Google Guava:
import com.google.common.base.MoreObjects;
import com.google.common.base.Supplier;
public Object getWithGuava() {
return MoreObjects.firstNonNull(
getObject1(),
getObject2()
);
}实际应用示例
public class UserService {
public User findUser(String id) {
// 尝试从缓存获取
User user = cache.get(id);
if (user != null) {
return user; // 不为空则返回
}
// 缓存为空,继续从数据库获取
user = database.get(id);
if (user != null) {
cache.put(id, user); // 存入缓存
return user;
}
// 都没有找到,返回默认值
return User.ANONYMOUS;
}
// 使用 Optional 的优雅写法
public User findUserElegant(String id) {
return Optional.ofNullable(cache.get(id))
.or(() -> Optional.ofNullable(database.get(id)))
.map(user -> {
cache.put(id, user);
return user;
})
.orElse(User.ANONYMOUS);
}
}推荐
对于简单的条件判断,使用传统 `if-else` 最直观
对于复杂的空值处理链,推荐使用 Java 8+ 的 `Optional`,代码更清晰
如果项目中已经有 Apache Commons 或 Guava,可以使用它们的工具类
对于性能敏感的场景,传统 if-else 可能更快
到此这篇关于java实现处理对象不为空则返回,为空则继续的文章就介绍到这了,更多相关java处理对象不为空内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot关闭过程中销毁DisposableBean解读
这篇文章主要介绍了SpringBoot关闭过程中销毁DisposableBean解读,一个bean的生命周期,指的是 bean 从创建,初始化,一系列使用,销毁的过程,今天来讲讲 bean 的初始化和销毁的方法,需要的朋友可以参考下2023-12-12
SpringBoot中分页插件PageHelper的使用详解
分页查询是为了高效展示大量数据,通过分页将数据划分为多个部分逐页展示,原生方法需手动计算数据起始行,而使用PageHelper插件则简化这一过程,本文给大家介绍SpringBoot中分页插件PageHelper的使用,感兴趣的朋友一起看看吧2024-09-09
spring boot 开发soap webservice的实现代码
这篇文章主要介绍了spring boot 开发soap webservice的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-01-01
SpringCloud全局过虑器GlobalFilter的用法小结
这篇文章主要介绍了SpringCloud全局过虑器GlobalFilter的使用,全局过虑器使用非常广泛,比如验证是否登录,全局性的处理,黑名单或白名单的校验等,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下2023-07-07


最新评论