最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)處理對象不為空則返回,為空則繼續(xù)

 更新時(shí)間:2025年12月25日 09:45:32   作者:悟能不能悟  
在Java中有多種方法可以處理對象不為空則返回,為空則繼續(xù)的邏輯,本文為大家整理了幾種常見的實(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ù)透視表

    使用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)

    這篇文章主要介紹了IDEA 中創(chuàng)建SpringBoot 父子模塊的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java下載url路徑包含中文需要轉(zhuǎn)義的操作

    java下載url路徑包含中文需要轉(zhuǎn)義的操作

    這篇文章主要介紹了java下載url路徑包含中文需要轉(zhuǎn)義的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • SpringBoot關(guān)閉過程中銷毀DisposableBean解讀

    SpringBoot關(guān)閉過程中銷毀DisposableBean解讀

    這篇文章主要介紹了SpringBoot關(guān)閉過程中銷毀DisposableBean解讀,一個(gè)bean的生命周期,指的是 bean 從創(chuàng)建,初始化,一系列使用,銷毀的過程,今天來講講 bean 的初始化和銷毀的方法,需要的朋友可以參考下
    2023-12-12
  • Spring aop失效的幾種解決方案

    Spring aop失效的幾種解決方案

    這篇文章主要介紹了Spring aop失效的幾種解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot中分頁插件PageHelper的使用詳解

    SpringBoot中分頁插件PageHelper的使用詳解

    分頁查詢是為了高效展示大量數(shù)據(jù),通過分頁將數(shù)據(jù)劃分為多個(gè)部分逐頁展示,原生方法需手動(dòng)計(jì)算數(shù)據(jù)起始行,而使用PageHelper插件則簡化這一過程,本文給大家介紹SpringBoot中分頁插件PageHelper的使用,感興趣的朋友一起看看吧
    2024-09-09
  • java解析excel文件的方法

    java解析excel文件的方法

    這篇文章主要介紹了java解析excel文件的方法,這里整理相關(guān)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • spring boot 開發(fā)soap webservice的實(shí)現(xiàn)代碼

    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的用法小結(jié)

    這篇文章主要介紹了SpringCloud全局過慮器GlobalFilter的使用,全局過慮器使用非常廣泛,比如驗(yàn)證是否登錄,全局性的處理,黑名單或白名單的校驗(yàn)等,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java中IO流概述

    Java中IO流概述

    大家好,本篇文章主要講的是Java中IO流概述,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01

最新評(píng)論

宣城市| 昌邑市| 乌拉特前旗| 宜兰县| 民乐县| 湄潭县| 平阴县| 札达县| 夏邑县| 柯坪县| 武城县| 墨竹工卡县| 肥西县| 湖南省| 靖边县| 深州市| 上高县| 洛南县| 中山市| 富蕴县| 博客| 漳州市| 三亚市| 丘北县| 宣化县| 黑河市| 南昌市| 南召县| 绥阳县| 措美县| 黔西| 根河市| 光泽县| 财经| 彭阳县| 新河县| 罗城| 增城市| 商城县| 务川| 凌云县|