zoukankan      html  css  js  c++  java
  • SpringBoot Lombok使用详解3(@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor)

    五、Lombok 注解详解(2)

    5,@NoArgsConstructor

    注解在类上,为类提供一个无参的构造方法。
    注意:
    当类中有 final 字段没有被初始化时,编译器会报错,此时可用 @NoArgsConstructor(force = true),然后就会为没有初始化的 final 字段设置默认值 0 / false / null。
    对于具有约束的字段(例如 @NonNull 字段),不会生成检查或分配,因此请注意,正确初始化这些字段之前,这些约束无效。
    // 使用注解
    @NoArgsConstructor
    public class Shape {
        private int x;
        @NonNull
        private double y;
        @NonNull
        private String name;
    }
     
    // 不使用注解
    public class Shape {
        private int x;
        private double y;
        private String name;
     
        public Shape(){
        }
    }

    6,@AllArgsConstructor

    (1)注解在类上,为类提供一个全参的构造方法。
    (2)默认生成的方法是 public 的,如果要修改方法修饰符可以设置 AccessLevel 的值。
    • 例如:@Getter(access = AccessLevel.PROTECTED)
    // 使用注解
    @AllArgsConstructor(access = AccessLevel.PROTECTED)
    public class Shape {
        private int x;
        @NonNull
        private double y;
        @NonNull
        private String name;
    }
     
    // 不使用注解
    public class Shape {
        private int x;
        private double y;
        private String name;
     
        protected Shape(int x, double y, String name){
            this.x = x;
            this.y = y;
            this.name = name;
        }
    }

    7,@RequiredArgsConstructor

    (1)注解在类上,会生成构造方法(可能带参数也可能不带参数)。
    注意:如果带参数,这参数只能是以 final 修饰的未经初始化的字段或者是以 @NonNull 注解的未经初始化的字段。

    (2)该注解还可以用 @RequiredArgsConstructor(staticName="methodName") 的形式生成一个指定名称的静态方法,返回一个调用相应的构造方法产生的对象

    // 使用注解
    @RequiredArgsConstructor(staticName = "hangge")
    public class Shape {
        private int x;
        @NonNull
        private double y;
        @NonNull
        private String name;
    }
     
    // 不使用注解
    public class Shape {
        private int x;
        private double y;
        private String name;
     
        public Shape(double y, String name){
            this.y = y;
            this.name = name;
        }
     
        public static Shape hangge(double y, String name){
            return new Shape(y, name);
        }
    }
    早年同窗始相知,三载瞬逝情却萌。年少不知愁滋味,犹读红豆生南国。别离方知相思苦,心田红豆根以生。
  • 相关阅读:
    2017-2018-1 20155208 20155212 20155239 实验一 开发环境的熟悉
    2017-2018-1 20155332实验三 实时系统报告
    2017-2018-1 20155332 《信息安全系统设计基础》第九周学习总结
    第9周 实现PWD命令
    2016-2017第一学期 20155332 第八周课堂实践
    2017-2018-1 20155312 《信息安全系统设计基础》第八周学习总结
    20155332实验二 固件编程
    2017-2018-1 20155332 《信息安全系统设计基础》第7周学习总结
    20155332口令破解实验
    2017-2018-1 20155332 《信息安全系统设计基础》第六周学习总结
  • 原文地址:https://www.cnblogs.com/shanheyongmu/p/15701148.html
Copyright © 2011-2022 走看看