java實(shí)現(xiàn)處理對象不為空則返回,為空則繼續(xù)
在Java中有多種方法可以處理對象不為空則返回,為空則繼續(xù)的邏輯。以下是幾種常見的實(shí)現(xiàn)方式:
1. 傳統(tǒng) if-else 方式
public Object processObject(Object obj) {
if (obj != null) {
return obj;
}
// 繼續(xù)執(zhí)行其他邏輯
return doSomethingElse();
}2. 三元運(yùn)算符(簡單條件)
public Object getResult() {
Object obj = getPossibleNullObject();
return obj != null ? obj : getDefaultObject();
// 或者繼續(xù)執(zhí)行其他邏輯
}
3. 使用 Optional(Java 8+ 推薦)
import java.util.Optional;
public Object processWithOptional() {
return Optional.ofNullable(getPossibleNullObject())
.orElseGet(() -> {
// 對象為空時(shí)執(zhí)行的邏輯
return getDefaultValue();
});
}
// 或者鏈?zhǔn)秸{(diào)用
public Object processChain() {
return Optional.ofNullable(getObject1())
.or(() -> Optional.ofNullable(getObject2()))
.orElse(getDefaultObject());
}4. 鏈?zhǔn)娇罩禉z查
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. 實(shí)用工具方法
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()
);
}實(shí)際應(yīng)用示例
public class UserService {
public User findUser(String id) {
// 嘗試從緩存獲取
User user = cache.get(id);
if (user != null) {
return user; // 不為空則返回
}
// 緩存為空,繼續(xù)從數(shù)據(jù)庫獲取
user = database.get(id);
if (user != null) {
cache.put(id, user); // 存入緩存
return user;
}
// 都沒有找到,返回默認(rèn)值
return User.ANONYMOUS;
}
// 使用 Optional 的優(yōu)雅寫法
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);
}
}推薦
對于簡單的條件判斷,使用傳統(tǒng) `if-else` 最直觀
對于復(fù)雜的空值處理鏈,推薦使用 Java 8+ 的 `Optional`,代碼更清晰
如果項(xiàng)目中已經(jīng)有 Apache Commons 或 Guava,可以使用它們的工具類
對于性能敏感的場景,傳統(tǒng) if-else 可能更快
到此這篇關(guān)于java實(shí)現(xiàn)處理對象不為空則返回,為空則繼續(xù)的文章就介紹到這了,更多相關(guān)java處理對象不為空內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Java在Excel中創(chuàng)建數(shù)據(jù)透視表
在處理銷售數(shù)據(jù)、財(cái)務(wù)報(bào)表或運(yùn)營指標(biāo)時(shí),數(shù)據(jù)透視表是快速匯總和分析大量數(shù)據(jù)的強(qiáng)大工具,通過 Java 自動(dòng)化這個(gè)過程可以實(shí)現(xiàn)定期報(bào)告的自動(dòng)生成,大幅提高工作效率,本文將詳細(xì)介紹如何使用 Java 在 Excel 工作簿中創(chuàng)建數(shù)據(jù)透視表,需要的朋友可以參考下2026-03-03
IDEA 中創(chuàng)建SpringBoot 父子模塊的實(shí)現(xiàn)
這篇文章主要介紹了IDEA 中創(chuàng)建SpringBoot 父子模塊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
SpringBoot關(guān)閉過程中銷毀DisposableBean解讀
這篇文章主要介紹了SpringBoot關(guān)閉過程中銷毀DisposableBean解讀,一個(gè)bean的生命周期,指的是 bean 從創(chuàng)建,初始化,一系列使用,銷毀的過程,今天來講講 bean 的初始化和銷毀的方法,需要的朋友可以參考下2023-12-12
SpringBoot中分頁插件PageHelper的使用詳解
分頁查詢是為了高效展示大量數(shù)據(jù),通過分頁將數(shù)據(jù)劃分為多個(gè)部分逐頁展示,原生方法需手動(dòng)計(jì)算數(shù)據(jù)起始行,而使用PageHelper插件則簡化這一過程,本文給大家介紹SpringBoot中分頁插件PageHelper的使用,感興趣的朋友一起看看吧2024-09-09
spring boot 開發(fā)soap webservice的實(shí)現(xiàn)代碼
這篇文章主要介紹了spring boot 開發(fā)soap webservice的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
SpringCloud全局過慮器GlobalFilter的用法小結(jié)
這篇文章主要介紹了SpringCloud全局過慮器GlobalFilter的使用,全局過慮器使用非常廣泛,比如驗(yàn)證是否登錄,全局性的處理,黑名單或白名單的校驗(yàn)等,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07

