从 Java 8 开始,便引入了一种称为“流式 API”的编程风格,当然也被称为“链式设置”或“链式调用”。它主要是通过设置方法的返回值,让返回值变为对象自身,从而实现连续的方法调用,这种风格就叫做“链式设置”或“链式调用”。
例如,以下代码:
MySQLConnectOptions connectOptions = new MySQLConnectOptions() .setPort(3306) .setHost("127.0.0.1") .setDatabase("mydb") .setUser("root") .setPassword("root");
其属性的设置就称为链式调用或链式设置。
使用链式调用主要有以下几个优点:
总的来说,链式设置提高了代码的可读性和可组合性,使得代码更加简洁、灵活和易于维护。
链式调用的主要实现方式,总共有以下 4 种:
具体实现如下。
Setter 原生方式的实现比较简单,只需要设置 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; }}
链式调用代码如下:
Student stu = new Student() .name("磊哥") .age(18);
Lombok 是一个 Java 库,它通过注解来简化 Java 代码的编写。其中,@Accessors 注解可以开启链式调用风格。
具体实现代码如下:
@Getter@Setter@Accessors(chain = true)public class Student { private String name; private int age;}
在上面的示例中,使用了 @Accessors(chain = true) 注解来开启链式调用风格。这样就可以通过以下方式进行链式设置:
Student stu = new Student() .setName("John") .setAge(30);
使用 @Builder 注解,会自动生成一个 Builder 类,通过该 Builder 类可以链式地设置类的属性并创建对象。这种方式在构建复杂对象时非常方便。
具体实现代码如下:
import lombok.Builder;@Builderpublic class Student { private String name; private int age;}
链式调用代码如下:
Student stu = Student.builder() .name("磊哥") .age(18) .build();
Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。其中,Hutool 提供了 GenericBuilder 类,可以实现链式调用,具体实现代码如下:
Student stu = GenericBuilder.of(Student::new) .with(Student::setName, "磊哥") .with(Student::setAge, 18) .build();
使用链式调用(也叫做链式设置)提高了代码的可读性和可组合性,使得代码更加简洁、灵活和易于维护。而链式调用的常用实现方式有:原生 Setter 方式、Lombok 的 @Accessors 注解或 @Builder 注解实现方式,或者使用 Hutool 工具中提供的 GenericBuilder 类都可以实现链式调用。
本文链接:http://www.28at.com/showinfo-26-45481-0.html被问住了:如何实现链式调用?
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 深度解读:Spring Boot启动流程解析与应用实战
下一篇: Python中Del语句,你真的了解了吗