• 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,再增加全参函数供子类调用
  • 相关阅读:
    等保测评(一)
    一个基于RNN的实体抽取工具
    如何画UML类图
    mysql存储过程整理
    记一次mysql事务未提交导致锁未释放的问题
    开启·元宇宙·区块链金融
    Nacos启动报错:[db-load-error]load jdbc.properties error
    使用Bazel编译TypeScript
    Win10上Docker无法正常启动 出现install WSL2 kernel update的情况
    VSCode调试PHP环境配置 phpstudy vscode xdebug调试
  • 原文地址:https://www.cnblogs.com/xuetieqi/p/13844688.html
Copyright © 2020-2023  润新知