• java lombok框架


    @Data 的作用?

    使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。

    @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

    @NoArgsConstructor:生成无参构造函数
    @RequiredArgsConstructor:生成一个构造函数,并对打了@NonNull的参数进行NullPointer检查 (这里有坑?为啥?)
    例如:

    // 源代码
    @RequiredArgsConstructor(staticName = "of")
    class Car{
        @NonNull
        private String origin;
        @NonNull
        private String model;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    // 编译后代码
    class Car{
        @NonNull
        private String origin;
        @NonNull
        private String model;
        
        // 省略get、set方法
        private Car(@NonNull String origin, @NonNull String model) {
            if (origin == null) {
                throw new NullPointerException("origin is marked @NonNull but is null");
            } else {
                this.origin = origin;
            }
            if (model == null) {
                throw new NullPointerException("model is marked @NonNull but is null");
            } else {
                this.model = model;
            }
        }
        public static Car of(@NonNull String origin, @NonNull String model) {
            return new Car(origin, model);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    @AllArgsConstructor:生成全参构造函数

    @NoArgsConstructor will generate a constructor with no parameters. If
    this is not possible (because of final fields), a compiler error will
    result instead, unless @NoArgsConstructor(force = true) is used, then
    all final fields are initialized with 0 / false / null. For fields
    with constraints, such as @NonNull fields, no check is generated,so be
    aware that these constraints will generally not be fulfilled until
    those fields are properly initialized later. This annotation is useful
    primarily in combination with either @Data or one of the other
    constructor generating annotations.

    lombok还有什么常见用法?

    上面的@Data、@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor都是lombok的注解。
    其他还有:

    @builder有什么用?

    当一个类的属性很多,但构造时只需要其中几个属性时,更方便。

    @builder的原理是什么

    @builder自动实现了以下原生的builder模式

    class Car{
        private String origin;
        private String model;
    
        private Car(String model){
            this.model = model;
        }
    
        private Car(Builder builder){
            this.origin = builder.origin;
            this.model = builder.model;
        }
    
        public static Car of(String model){
            return new Car(model);
        }
    
        public static Builder builder(){
            return new Builder();
        }
    
        public static class Builder{
            private String origin;
            private String model;
    
            public Builder origin(String origin){
                this.origin = origin;
                return this;
            }
    
            public Builder model(String model){
                this.model = model;
                return this;
            }
    
            public Car build(){
                return new Car(this);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    @SuperBuilder用法

  • 相关阅读:
    XML解析
    信钰证券:中央汇金出手,金融板块沸腾,后续还有哪些可以期待?
    3款录屏录制软件,打造专业级视频内容
    【微信小程序】网络数据请求
    MongoDB索引覆盖查询
    webpack原理篇(五十六):webpack流程:模块构建和chunk生成阶段
    【SwiftUI模块】0012、SwiftUI-搭建一个类似微博、网易云、抖音个人页面的头部下拉放大图片效果
    vscode运行dlv报错超时
    BI是什么?想要了解BI需要从哪些方面入手?
    如何使用Python和Numpy实现简单的2D FDTD仿真:详细指南与完整代码示例
  • 原文地址:https://blog.csdn.net/virusos/article/details/127981892