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     }
  • 相关阅读:
    spark简单入门
    vim 树形目录插件NERDTree
    Windows下查看系统端口使用的命令
    网络爬虫爬取动态网页
    Java并查集链表实现
    基于mahout的海量数据关联规则挖掘
    高维特征降维方法-随机映射
    JVM(4)--垃圾回收算法
    Java高并发程序设计(六)--线程池(1)
    Java高并发程序设计(五)--ReentrantLock源码解析
  • 原文地址:https://www.cnblogs.com/bulrush/p/12700121.html
Copyright © 2011-2022 走看看