日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
被問住了:如何實現(xiàn)鏈?zhǔn)秸{(diào)用?

從 Java 8 開始,便引入了一種稱為“流式 API”的編程風(fēng)格,當(dāng)然也被稱為“鏈?zhǔn)皆O(shè)置”或“鏈?zhǔn)秸{(diào)用”。它主要是通過設(shè)置方法的返回值,讓返回值變?yōu)閷ο笞陨?,從而實現(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è)置就稱為鏈?zhǔn)秸{(diào)用或鏈?zhǔn)皆O(shè)置。

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

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

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

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

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

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

  1. Setter 原生方式
  2. Lombok @Accessors 注解方式
  3. Lombok @Builder 注解方式
  4. Hutool GenericBuilder 方式

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

2.1 Setter 原生方式

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

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 是一個 Java 庫,它通過注解來簡化 Java 代碼的編寫。其中,@Accessors 注解可以開啟鏈?zhǔn)秸{(diào)用風(fēng)格。

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

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

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

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

2.3 Lombok @Builder 注解方式

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

具體實現(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 是一個小而全的 Java 工具類庫,通過靜態(tài)方法封裝,降低相關(guān) API 的學(xué)習(xí)成本,提高工作效率,使 Java 擁有函數(shù)式語言般的優(yōu)雅,讓 Java 語言也可以“甜甜的”。其中,Hutool 提供了 GenericBuilder 類,可以實現(xiàn)鏈?zhǔn)秸{(diào)用,具體實現(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è)置)提高了代碼的可讀性和可組合性,使得代碼更加簡潔、靈活和易于維護(hù)。而鏈?zhǔn)秸{(diào)用的常用實現(xiàn)方式有:原生 Setter 方式、Lombok 的 @Accessors 注解或 @Builder 注解實現(xiàn)方式,或者使用 Hutool 工具中提供的 GenericBuilder 類都可以實現(xiàn)鏈?zhǔn)秸{(diào)用。


分享文章:被問住了:如何實現(xiàn)鏈?zhǔn)秸{(diào)用?
網(wǎng)頁網(wǎng)址:http://m.5511xx.com/article/cdpdcdj.html