zoukankan      html  css  js  c++  java
  • LomBok使用的几处小细节

    先抛出一个实践认证结论,优先级关系

    @AllArgsConstructor,@NoArgsConstructor 》@Builder》@Data,@Getter,@Setter

    1.@Getter 生成get方法、无参函数

    2.@Setter 生成set方法、无参函数

    3.@Data 生成get、set方法,无参函数,hashCode,equals,canEqual,toString方法

    4.@Builder 生成全参函数、builder静态方法及XXXBuilder静态内置类

    5.@AllArgsConstructor 参函数

    6.@NoArgsConstructor 参函数

    测试a.

    不引入@AllArgsConstructor,@NoArgsConstructor两个注解时,对@Builder,@Data,@Getter,@Setter两两组合反编译发现

    只要引入了@Builder,无参函数就没了被全参函数代替

    测试b.

    不引入@Builder注解时,对@AllArgsConstructor,@NoArgsConstructor,@Data,@Getter,@Setter两两组合反编译发现

    构造函数以@AllArgsConstructor,@NoArgsConstructor为准,@Data,@Getter,@Setter的无参函数优先级低

    测试c.

    在引入@Builder和@NoArgsConstructor时编译报错,因为@Builder必须依赖全参函数,而@NoArgsConstructor优先级高使得

    类没有全参函数故编译报错,此时加入@AllArgsConstructor就编译通过了。

    增:继承关系下@Data @Builder需要作出的调整

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString(callSuper = true)
    @EqualsAndHashCode(callSuper = true)
    public class Student extends Teacher {
    private String name;

    @Builder
    Student(String a,String b){
    super(b);
    this.name = b;
    }
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Teacher {
    private String classname;
    }


    注意父类不能使用@Builder,再增加全参函数供子类调用
  • 相关阅读:
    node体验
    JS练习--prototype的一道题目
    JS的OOP--继承之prototype
    JS的OOP--new一个function背后的实际操作
    JS中new运算符的运算顺序
    thymeleaf 拼接字符串与变量
    spring jpa exists
    LocalDateTime json格式化
    格式化java8 LocalDateTime
    springboot定时任务
  • 原文地址:https://www.cnblogs.com/xuetieqi/p/13844688.html
Copyright © 2011-2022 走看看