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

一文詳解java如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用

 更新時(shí)間:2023年12月14日 14:00:37   作者:Java中文社群  
從?Java?8?開(kāi)始,便引入了一種稱(chēng)為“流式?API”的編程風(fēng)格,當(dāng)然也被稱(chēng)為“鏈?zhǔn)皆O(shè)置”或“鏈?zhǔn)秸{(diào)用”,本文主要來(lái)和大家討論一下如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用,感興趣的可以了解下

從 Java 8 開(kāi)始,便引入了一種稱(chēng)為“流式 API”的編程風(fēng)格,當(dāng)然也被稱(chēng)為“鏈?zhǔn)皆O(shè)置”或“鏈?zhǔn)秸{(diào)用”。它主要是通過(guò)設(shè)置方法的返回值,讓返回值變?yōu)閷?duì)象自身,從而實(shí)現(xiàn)連續(xù)的方法調(diào)用,這種風(fēng)格就叫做“鏈?zhǔn)皆O(shè)置”或“鏈?zhǔn)秸{(diào)用”。

例如,以下代碼:

MySQLConnectOptions connectOptions = new MySQLConnectOptions()
    .setPort(3306)
    .setHost("127.0.0.1")
    .setDatabase("mydb")
    .setUser("root")
    .setPassword("root");

其屬性的設(shè)置就稱(chēng)為鏈?zhǔn)秸{(diào)用或鏈?zhǔn)皆O(shè)置。

1.鏈?zhǔn)秸{(diào)用優(yōu)點(diǎn)

使用鏈?zhǔn)秸{(diào)用主要有以下幾個(gè)優(yōu)點(diǎn):

  • 簡(jiǎn)潔性:鏈?zhǔn)皆O(shè)置使得代碼更加簡(jiǎn)潔和易讀。通過(guò)連續(xù)的方法調(diào)用,可以在一行代碼中完成多個(gè)操作,減少了代碼的冗余和嵌套。
  • 可讀性:鏈?zhǔn)皆O(shè)置可以提供更清晰、更自然的代碼流。每個(gè)方法調(diào)用都可以形成一個(gè)語(yǔ)義上的整體,使得代碼更易于理解。
  • 可組合性:鏈?zhǔn)皆O(shè)置可以方便地組合多個(gè)操作。每個(gè)方法返回的是對(duì)象自身或包含對(duì)象自身的容器,使得可以連續(xù)地進(jìn)行多個(gè)操作,從而實(shí)現(xiàn)更復(fù)雜的功能。
  • 可擴(kuò)展性:鏈?zhǔn)皆O(shè)置使得添加、修改或移除操作更加靈活。由于每個(gè)方法都是在對(duì)象自身上操作,并返回對(duì)象自身或包含對(duì)象自身的容器,可以輕松地添加新的操作或修改現(xiàn)有的操作。

總的來(lái)說(shuō),鏈?zhǔn)皆O(shè)置提高了代碼的可讀性和可組合性,使得代碼更加簡(jiǎn)潔、靈活和易于維護(hù)。

2.鏈?zhǔn)秸{(diào)用實(shí)現(xiàn)

鏈?zhǔn)秸{(diào)用的主要實(shí)現(xiàn)方式,總共有以下 4 種:

  • Setter 原生方式
  • Lombok @Accessors 注解方式
  • Lombok @Builder 注解方式
  • Hutool GenericBuilder 方式

具體實(shí)現(xiàn)如下。

2.1 Setter 原生方式

Setter 原生方式的實(shí)現(xiàn)比較簡(jiǎn)單,只需要設(shè)置 Setter 方法,并且每個(gè) Setter 方法都返回自身對(duì)象即可,如下代碼所示:

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

    public Student name(String name) {
        this.name = name;
        return this;
    }

    public Student age(int age) {
        this.age = age;
        return this;
    }
}

鏈?zhǔn)秸{(diào)用代碼如下:

Student stu = new Student()
        .name("磊哥")
        .age(18);

2.2 Lombok @Accessors 注解方式

Lombok 是一個(gè) Java 庫(kù),它通過(guò)注解來(lái)簡(jiǎn)化 Java 代碼的編寫(xiě)。其中,@Accessors 注解可以開(kāi)啟鏈?zhǔn)秸{(diào)用風(fēng)格。

具體實(shí)現(xiàn)代碼如下:

@Getter
@Setter
@Accessors(chain = true)
public class Student {
    private String name;
    private int age;
}

在上面的示例中,使用了 @Accessors(chain = true) 注解來(lái)開(kāi)啟鏈?zhǔn)秸{(diào)用風(fēng)格。這樣就可以通過(guò)以下方式進(jìn)行鏈?zhǔn)皆O(shè)置:

Student stu = new Student()
 .setName("John")
 .setAge(30);

2.3 Lombok @Builder 注解方式

使用 @Builder 注解,會(huì)自動(dòng)生成一個(gè) Builder 類(lèi),通過(guò)該 Builder 類(lèi)可以鏈?zhǔn)降卦O(shè)置類(lèi)的屬性并創(chuàng)建對(duì)象。這種方式在構(gòu)建復(fù)雜對(duì)象時(shí)非常方便。

具體實(shí)現(xiàn)代碼如下:

import lombok.Builder;

@Builder
public class Student {
    private String name;
    private int age;
}

鏈?zhǔn)秸{(diào)用代碼如下:

Student stu = Student.builder()
    .name("磊哥")
    .age(18)
    .build();

2.4 Hutool GenericBuilder 方式

Hutool 是一個(gè)小而全的 Java 工具類(lèi)庫(kù),通過(guò)靜態(tài)方法封裝,降低相關(guān) API 的學(xué)習(xí)成本,提高工作效率,使 Java 擁有函數(shù)式語(yǔ)言般的優(yōu)雅,讓 Java 語(yǔ)言也可以“甜甜的”。其中,Hutool 提供了 GenericBuilder 類(lèi),可以實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用,具體實(shí)現(xiàn)代碼如下:

Student stu = GenericBuilder.of(Student::new)
                .with(Student::setName, "磊哥")
                .with(Student::setAge, 18)
                .build();

小結(jié)

使用鏈?zhǔn)秸{(diào)用(也叫做鏈?zhǔn)皆O(shè)置)提高了代碼的可讀性和可組合性,使得代碼更加簡(jiǎn)潔、靈活和易于維護(hù)。而鏈?zhǔn)秸{(diào)用的常用實(shí)現(xiàn)方式有:原生 Setter 方式、Lombok 的 @Accessors 注解或 @Builder 注解實(shí)現(xiàn)方式,或者使用 Hutool 工具中提供的 GenericBuilder 類(lèi)都可以實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用。

到此這篇關(guān)于一文詳解java如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用的文章就介紹到這了,更多相關(guān)java鏈?zhǔn)秸{(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于SpringCloud灰度發(fā)布的實(shí)現(xiàn)

    關(guān)于SpringCloud灰度發(fā)布的實(shí)現(xiàn)

    這篇文章主要介紹了關(guān)于SpringCloud灰度發(fā)布的實(shí)現(xiàn),灰度發(fā)布又稱(chēng)金絲雀發(fā)布,是在系統(tǒng)升級(jí)的時(shí)候能夠平滑過(guò)渡的一種發(fā)布方式,灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問(wèn)題,以保證其影響度,需要的朋友可以參考下
    2023-08-08
  • Java OpenCV實(shí)現(xiàn)圖像鏡像翻轉(zhuǎn)效果

    Java OpenCV實(shí)現(xiàn)圖像鏡像翻轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了Java OpenCV實(shí)現(xiàn)圖像鏡像翻轉(zhuǎn)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java System類(lèi)兩個(gè)常用方法代碼實(shí)例

    Java System類(lèi)兩個(gè)常用方法代碼實(shí)例

    這篇文章主要介紹了Java System類(lèi)兩個(gè)常用方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Spring Boot JPA中java 8 的應(yīng)用實(shí)例

    Spring Boot JPA中java 8 的應(yīng)用實(shí)例

    這篇文章主要介紹了Spring Boot JPA中java 8 的應(yīng)用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢(xún)功能

    java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢(xún)功能

    這篇文章主要介紹了java mybatis框架實(shí)現(xiàn)多表關(guān)系查詢(xún),基于Maven框架的整體設(shè)計(jì) —— 一多一的關(guān)系,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 淺談slf4j中的橋接器是如何運(yùn)作的

    淺談slf4j中的橋接器是如何運(yùn)作的

    這篇文章主要介紹了slf4j中的橋接器是如何運(yùn)作的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java 垃圾回收機(jī)制詳解及實(shí)例代碼

    Java 垃圾回收機(jī)制詳解及實(shí)例代碼

    這篇文章主要介紹了 Java 垃圾回收機(jī)制詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java后臺(tái)處理Json格式數(shù)據(jù)的方法

    Java后臺(tái)處理Json格式數(shù)據(jù)的方法

    這篇文章主要介紹了Java后臺(tái)處理Json格式數(shù)據(jù)的方法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Spring的@ComponentScan注解用法介紹

    Spring的@ComponentScan注解用法介紹

    這篇文章主要介紹了Spring的@ComponentScan注解用法介紹,@ComponentScan注解一般和@Configuration注解一起使用,主要的作用就是定義包掃描的規(guī)則,然后根據(jù)定義的規(guī)則找出哪些需類(lèi)需要自動(dòng)裝配到spring的bean容器中,然后交由spring進(jìn)行統(tǒng)一管理,需要的朋友可以參考下
    2023-11-11
  • java 開(kāi)發(fā)使用字符串和數(shù)字的性能分析

    java 開(kāi)發(fā)使用字符串和數(shù)字的性能分析

    這篇文章主要介紹了java 開(kāi)發(fā)使用字符串和數(shù)字的性能分析的相關(guān)資料,需要的朋友可以參考下
    2017-07-07

最新評(píng)論

罗定市| 怀安县| 库尔勒市| 葫芦岛市| 阿拉尔市| 海淀区| 通江县| 高要市| 鹤山市| 漯河市| 驻马店市| 青岛市| 济阳县| 姜堰市| 忻州市| 洛扎县| 达州市| 惠州市| 霍邱县| 华池县| 克山县| 麻栗坡县| 丰都县| 合川市| 康平县| 乐至县| 昔阳县| 广宁县| 城步| 卓尼县| 漳州市| 长白| 东台市| 黎平县| 澜沧| 石狮市| 金川县| 陵水| 乌恰县| 望城县| 泽州县|