lombok

@Accessors用法
Accessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果,下面介绍三个属性

1、fluent

fluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。如下

@Data
@Accessors(fluent = true)
public class User {
    private Long id;
    private String name;
     
    // 生成的getter和setter方法如下,方法体略
    public Long id() {}
    public User id(Long id) {}
    public String name() {}
    public User name(String name) {}
}

2、chain

chain的中文含义是链式的,设置为true,则setter方法返回当前对象。如下

@Data
@Accessors(chain = true)
public class User {
    private Long id;
    private String name;
     
    // 生成的setter方法如下,方法体略
    public User setId(Long id) {}
    public User setName(String name) {}
}

PS:setter方法返回当前对象作用:可以链式调用,如:User user = new User().setId(1).setName(“name”);
3、prefix

prefix的中文含义是前缀,用于生成getter和setter方法的字段名会忽视指定前缀(遵守驼峰命名)。如下

@Data
@Accessors(prefix = "p")
class User {
    private Long pId;
    private String pName;
     
    // 生成的getter和setter方法如下,方法体略
    public Long getId() {}
    public void setId(Long id) {}
    public String getName() {}
    public void setName(String name) {}
}

@Builder

相当于

public class Student {

    // 必选
    private String name;
    // 可选
    private int age;
    private String title;

    private static class Builder {
        // 必选
        private String name;
        // 可选
        private int age;
        private String title;

        public Builder(String name) {
            this.name = name;
        }

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

        public Builder title(String s) {
            this.title = s;
            return this;
        }

        public Student build() {
            return new Student(this);
        }

    }

    private Student(Builder builder) {
        name = builder.name;
        age = builder.age;
        title = builder.title;
    }

这里面有几个重要的点:

将Student类的构造方法私有化,所以想要新建Student必须使用Builder.
Builder只有一个构造方法,传入必选的参数,这样可以保证每个Student都会有必选参数.
对所有的可选参数提供同名方法,使得可选参数可以被设置,同时返回自身.
Builder提供build方法,调用Student私有的构造方法,返回对象.

客户端的调用方法如下:

@Builder
 public class Student {
    // 必选
    private String name;
    // 可选
    private int age;
    private String title;
 }
 public static void main(String[] args) {
        Student s = new Builder("huyan").age(11).title("888").build();
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值