泉州市网站建设_网站建设公司_网站开发_seo优化
2026/3/2 13:03:43 网站建设 项目流程

在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 可能更快

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询