zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    Chapter 03Using SingleRow Functions to Customize Output(03)
    Chapter 03Using SingleRow Functions to Customize Output(01)
    Chapter 04Using Conversion Functions and Conditional ExpressionsNesting Functions
    Chapter 04Using Conversion Functions and Conditional ExpressionsGeneral Functions
    Chapter 11Creating Other Schema Objects Index
    传奇程序员John Carmack 访谈实录 (zz.is2120)
    保持简单纪念丹尼斯里奇(Dennis Ritchie) (zz.is2120.BG57IV3)
    王江民:传奇一生 (zz.is2120)
    2011台湾游日月潭
    2011台湾游星云大师的佛光寺
  • 原文地址:https://www.cnblogs.com/bulrush/p/12700121.html
Copyright © 2011-2022 走看看