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     }
  • 相关阅读:
    进程池,线程池,协程,gevent模块,协程实现单线程服务端与多线程客户端通信,IO模型
    线程相关 GIL queue event 死锁与递归锁 信号量l
    生产者消费者模型 线程相关
    进程的开启方式 进程的join方法 进程间的内存隔离 其他相关方法 守护进程 互斥锁
    udp协议 及相关 利用tcp上传文件 socketserver服务
    socket套接字 tcp协议下的粘包处理
    常用模块的完善 random shutil shevle 三流 logging
    day 29 元类
    Django入门
    MySQL多表查询
  • 原文地址:https://www.cnblogs.com/bulrush/p/12700121.html
Copyright © 2011-2022 走看看