优雅的链式setter

优雅的链式setter

柳性安 3,303 2022-09-18

java链式调用来给实体类赋值,可以简化代码,使代码更具有可读性,下面分享一下 链调用风格

方法一:setter 返回当前 实体 类型,而非 void, 返回this

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

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

public Student setScore(Integer score) {
    this.score = score;
    return this;
}

然后,在创建对象的时候,就可以进行链式调用:

Student student = new Student().setName(“james”).setAge(22).setScore(80);

方法二:用 Lombok 实现 setter 的链式调用

@Data
@Accessors(chain = true)
public class Student {
    private String name;
    private Integer age;
    private Integer score;
}

第一行的 @Data 注解,是一系列注解的集合,主要作用是提高代码的简洁,使用这个注解可以省去代码中大量的get()、 set()、 toString()等方法;

第二行的 @Accessors 注解,就是这里的重点了,它用来设定 Lombok 应该怎样生成 setter 和 getter 代码。而其中的 chain 属性,就是打开链式 setter 的开关,将它打开之后,就可以生成支持链式调用的 setter 方法。
Lombok依赖:

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>