news 2026/5/15 16:40:12

java有没有一段代码,某个对象不为空则返回这个对象,为空则继续

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java有没有一段代码,某个对象不为空则返回这个对象,为空则继续

在Java中有多种方法可以处理对象不为空则返回,为空则继续的逻辑。以下是几种常见的实现方式:

## 1. **传统 if-else 方式**
```java
public Object processObject(Object obj) {
if (obj != null) {
return obj;
}
// 继续执行其他逻辑
return doSomethingElse();
}
```

## 2. **三元运算符(简单条件)**
```java
public Object getResult() {
Object obj = getPossibleNullObject();
return obj != null ? obj : getDefaultObject();
// 或者继续执行其他逻辑
}
```

## 3. **使用 Optional(Java 8+ 推荐)**
```java
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. **链式空值检查**
```java
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. **实用工具方法**
```java
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+)**
```java
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:
```java
import org.apache.commons.lang3.ObjectUtils;

public Object getWithApache() {
return ObjectUtils.firstNonNull(
getObject1(),
getObject2(),
getObject3()
);
}
```

### Google Guava:
```java
import com.google.common.base.MoreObjects;
import com.google.common.base.Supplier;

public Object getWithGuava() {
return MoreObjects.firstNonNull(
getObject1(),
getObject2()
);
}
```

## 实际应用示例
```java
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 可能更快

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 18:49:42

Ofd2Pdf完全指南:5步精通OFD转PDF高效转换

OFD作为国内广泛应用的版式文档标准&#xff0c;在办公场景、企业文档管理中广泛应用。Ofd2Pdf这款专业转换工具让OFD到PDF的格式转换变得轻松简单&#xff0c;无论是个别文件处理还是批量转换需求&#xff0c;都能提供稳定可靠的服务。 【免费下载链接】Ofd2Pdf Convert OFD f…

作者头像 李华
网站建设 2026/5/12 23:15:04

终极表情解决方案:Noto Emoji完整使用指南

在数字化交流日益频繁的今天&#xff0c;你是否曾遇到过表情显示为"豆腐块"的尴尬&#xff1f;或者在不同设备上看到完全不同的表情效果&#xff1f;这些问题都可以通过Noto Emoji项目得到完美解决。 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https…

作者头像 李华
网站建设 2026/5/13 11:02:48

Unlock Music音乐解锁工具:让加密音乐重获自由

Unlock Music音乐解锁工具&#xff1a;让加密音乐重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…

作者头像 李华
网站建设 2026/5/12 11:07:37

什么值得买自动化签到系统:从零搭建到持续运行完整攻略

想要告别每日手动签到什么值得买的繁琐操作吗&#xff1f;通过本教程&#xff0c;你将掌握搭建自动化签到系统的完整流程&#xff0c;实现积分自动获取&#xff0c;让签到变得轻松高效。什么值得买自动化签到系统能够帮助用户实现每日自动签到、积分自动累积&#xff0c;是提升…

作者头像 李华
网站建设 2026/5/13 9:49:09

终极指南:如何重新设置IDM 30天试用期(简单三步搞定)

想要长期使用功能强大的IDM下载管理工具&#xff0c;却受限于30天试用期&#xff1f;这款专业的IDM试用设置工具能帮你解决这个困扰&#xff0c;让你无需其他操作即可继续享受高速下载体验。本文将详细介绍如何下载安装、环境检测和一键设置&#xff0c;让你轻松掌握IDM试用设置…

作者头像 李华
网站建设 2026/5/13 7:14:40

AutoDock Vina分子对接完全手册:从基础操作到高级应用

AutoDock Vina作为分子对接领域的高效工具&#xff0c;为药物发现和生物分子研究提供了快速可靠的预测能力。本手册将带您系统掌握这一开源软件的完整使用方法&#xff0c;从简单案例到复杂场景&#xff0c;逐步提升您的分子对接技能水平。 【免费下载链接】AutoDock-Vina Auto…

作者头像 李华