成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 中如何優(yōu)雅地處理 null 值

開發(fā)
在本文中,我將介紹如何結(jié)合 Lambda 表達(dá)式和 Optional,讓 Java 更優(yōu)雅地處理 null 值。

之前的一篇文章中介紹了 Java 中的 Lambda 表達(dá)式。在本文中,我將介紹如何結(jié)合 Lambda 表達(dá)式和 Optional,讓 Java 更優(yōu)雅地處理 null 值。

假設(shè)我們有一個(gè)學(xué)生對(duì)象,以及這個(gè)學(xué)生對(duì)象的 Optional 包裝器:

public class Student {
    private String name;
    private Integer age;

    // 全參構(gòu)造函數(shù)
    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
    // toString 方法
    @Override
    public String toString() {
        return"Student{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}
public class OptionalTest {
    public static void main(String[] args) {
        Student student = new Student("Bob", 18);
        Optional<Student> studentOpt = Optional.ofNullable(student);
    }
}

如果不與 Lambda 結(jié)合使用,Optional 并不能簡(jiǎn)化原本繁瑣的 null 值檢查。例如:

// 編寫方法 1
if (student == null) {
    return UNKNOWN_STUDENT;
} else {
    return student;
}
// 編寫方法 2
if (!studentOpt.isPresent()) {
    return UNKNOWN_STUDENT;
} else {
    return studentOpt.get();
}

只有將 Optional 與 Lambda 結(jié)合使用,才能發(fā)揮它真正的威力!

現(xiàn)在,讓我們對(duì)比一下 Java 8 中 Lambda + Optional 與傳統(tǒng) Java 在以下四種常見 null 處理場(chǎng)景中的差異。

場(chǎng)景 1:不為 null 則執(zhí)行

// if 語句
if (student!= null) {
    System.out.println(student);
}
// Optional
studentOpt.ifPresent(System.out::println);

場(chǎng)景 2:不為 null 則返回,為 null 則返回特定值或拋出異常

// if 語句
if (student == null) {
    return UNKNOWN_STUDENT; // 或拋出異常
} else {
    return student;
}
// Optional
return studentOpt.orElse(UNKNOWN_STUDENT);
return studentOpt.orElseThrow(RuntimeException::new);

場(chǎng)景 3:不為 null 則返回,為 null 則由調(diào)用方法

// if 語句
if (student == null) {
    return UNKNOWN_STUDENT;
} else {
    return generateWithFunction();
}
// Optional
return studentOpt.orElseGet(() -> generateWithFunction());

場(chǎng)景 4:嵌套 null 檢查

// Java 7
if (student!= null) {
    String name = student.getName();
    if (name!= null) {
        return name;
    } else {
        return null;
    }
} else {
    return null;
}
// Java 8
return studentOpt.map(Student::getName).orElse(null);

從以上四種場(chǎng)景可以明顯看出,Optional + Lambda 讓我們少寫了很多 if-else 代碼塊。尤其是場(chǎng)景 4,傳統(tǒng)的 Java 寫法顯得冗長(zhǎng)且難以理解,而 Optional+Lambda 則簡(jiǎn)潔明了,清晰易懂。

總結(jié)

通過結(jié)合 Lambda 表達(dá)式和 Optional,Java 的 null 處理變得更加優(yōu)雅和簡(jiǎn)潔。希望這篇文章能幫助你更好地理解和使用這些特性。

責(zé)任編輯:趙寧寧 來源: 程序猿技術(shù)充電站
相關(guān)推薦

2014-07-22 09:01:53

SwiftJSON

2024-09-26 10:51:51

2023-05-12 12:09:38

職責(zé)鏈模式客服

2024-01-15 08:09:44

Fluent錯(cuò)誤代碼

2024-10-14 11:08:53

程序異常延遲

2024-05-21 08:14:59

代碼接口依賴注入

2020-07-09 10:15:55

空值Bug語言

2025-04-29 08:15:00

超大文件流式 + yield日志

2022-08-03 08:41:30

客戶端操作并發(fā)請(qǐng)求

2023-08-29 07:35:15

2025-02-27 09:39:56

JavaJava 8對(duì)象

2023-10-10 13:23:18

空指針異常Java

2025-02-13 09:02:04

2024-05-20 08:06:42

ASP接口服務(wù)

2023-10-05 12:43:48

數(shù)據(jù)處理

2023-10-07 08:34:27

項(xiàng)目API接口

2019-03-11 09:18:20

Java 8Stream數(shù)據(jù)結(jié)構(gòu)

2010-05-31 15:23:02

MySQL數(shù)據(jù)庫NUL

2016-08-04 16:04:56

2021-06-17 09:32:39

重復(fù)請(qǐng)求并發(fā)請(qǐng)求Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久美女网 | 色婷婷综合久久久中字幕精品久久 | 在线一区视频 | av资源中文在线 | 久久日韩粉嫩一区二区三区 | 激情毛片 | 人人爽日日躁夜夜躁尤物 | 91麻豆产精品久久久久久夏晴子 | 黄色网址在线免费观看 | 国产一区二区a | 亚洲精品国产电影 | 国产高清精品在线 | 国产午夜精品视频 | 欧美激情五月 | 亚洲视频在线播放 | 日本淫视频| 午夜影院在线观看版 | 国产精品一区二区三区在线 | 男人的天堂亚洲 | 欧美日韩黄色一级片 | 狠狠操狠狠干 | 久草视 | 国产99久久精品 | 免费视频久久 | 91免费福利在线 | 四虎国产| 夜夜爽99久久国产综合精品女不卡 | 另类a v| 妖精视频一区二区三区 | 成人在线观看亚洲 | 久久亚洲综合 | 在线欧美日韩 | 久久99久久久久 | 超碰天天 | 亚洲国产精品视频 | 国产精品99999 | 国产精品久久久久久久毛片 | 日韩欧美网 | 超碰在线观看97 | 亚洲综合小视频 | 久久久黄色|