lombok 实现 builder模式的链式bean

package com.wing.mall.base.test;

import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @ProjectName: baby
 * @Package: com.wing.mall.base.test
 * @ClassName: User
 * @Author: heluwei
 * @Description: 链式操作对象
 * @Date: 2020/4/14 18:28
 * @Version: 1.0
 */
@Builder
@Data
public class User implements Serializable {
    private Long id;
    private String name;
    private Integer age;

    public static void main(String[] args) {
        //链式创建对象
        User user = User.builder().id(1L).name("张三").age(18).builder(); 
      System.out.println(user);
      
//获取name的值,以前是getName()
     System.out.println(user.name);
  }
}

 通过Builder的方式链式组装

package com.wing.mall.base.test;

import lombok.*;

import java.io.Serializable;

/**
 * @ProjectName: baby
 * @Package: com.wing.mall.base.test
 * @ClassName: User
 * @Author: heluwei
 * @Description: 链式操作对象
 * @Date: 2020/4/14 18:28
 * @Version: 1.0
 */
@Data
public class User implements Serializable {
    private Long id;
    private String name;
    private Integer age;
    
    //通过Builder把值通过构造器的方式传递
    public User(Builder builder) {
        this.id = builder.id;
        this.name = builder.name;
        this.age = builder.age;
    }

    @Getter
    static class Builder{
        private Long id;
        private String name;
        private Integer age;

        public Builder setId(Long id) {
            this.id = id;
            return this;
        }

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

        public Builder setAge(Integer age) {
            this.age = age;
            return this;
        }
        public User builder(){
            return new User(this);
        }
    }

    public static void main(String[] args) {
        User user = new User.Builder().setId(1L).setName("张三").setAge(18).builder();
        System.out.println(user);
    }
}

输出结果:

使用@Builder注解和构造器

package com.wing.mall.cloud.pay.modular.controller;

import lombok.*;

@Data
@Builder
@NoArgsConstructor   //生成无参构造器
@AllArgsConstructor  //生成所有参数的构造器
public class Student {

    private String name;
    private Integer age;

}

测试:

 1 public static void main(String[] args) {
 2         Student student = Student.builder().age(18).build();
 3         System.out.println(student);
 4         Student student1 = new Student("lisi",19);
 5         System.out.println(student1);
 6         Student student2 = new Student();
 7         student2.setAge(20);
 8         student2.setName("wangwu");
 9         System.out.println(student2);
10        /* if (shouldShowSpinner("a", "b")) {
11             System.out.println("封装参数成功");
12         }else {
13             System.out.println("封装参数失败");
14         }*/
15     }
原文地址:https://www.cnblogs.com/bulrush/p/12700121.html