zoukankan      html  css  js  c++  java
  • @AllArgsConstructor @NoArgsConstructor

    //@Data 生成getter,setter ,toString等函数
    //@NoArgsConstructor 生成无参构造函数
    //@AllArgsConstructor //生成全参数构造函数

    //@Data 生成getter,setter等函数
    //@NoArgsConstructor 生成无参构造函数
    //@AllArgsConstructor //生成全参数构造函数
    @Data  
    @AllArgsConstructor
    @NoArgsConstructor
    public class test  implements Serializable {
        private static final long serialVersionUID = 1L;
        /**出口订单*/
        private Order  exportOrder;
        /**出口撤销*/
        private Order exportInvtCancel;
    }


    首先,用到的几个注解:

      • @Data
        使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。
      • @AllArgsConstructor
        使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
      • @NoArgsConstructor
        使用后创建一个无参构造函数
      • @Builder
        关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数,

    然后,通过一个简单的代码例子说明:

    1)首先,建立一个简单的类,并用lombok进行注解:注意这是注解前的代码,可以与后面贴出的注解生成的代码进行比较

    @Data //生成getter,setter等函数
    @AllArgsConstructor //生成全参数构造函数
    @NoArgsConstructor//生成无参构造函数
    @Builder
    public class test1 {
        String name;
        String age;
        String sex;
    }
    
    • 1

    2)测试入口:

     public static void main(String[] args) {
     //使用@Builder注解后,可以直接通过Builder设置字段参数
            test1 t1=new test1.test1Builder()
                    .name("wang")
                    .age("12")
                    .sex("man")
                    .build();
    
            System.out.println("name is"+t1.getName()+'
    '+"age is :"+t1.getAge());
    
        }
    

    3)通过查看编译后的类,比较注解前后的代码量,发现会省去了很多代码的书写:

    public class test1 {
        String name;
        String age;
        String sex;
    
        public static test1.test1Builder builder() {
            return new test1.test1Builder();
        }
    
        public String getName() {
            return this.name;
        }
    
        public String getAge() {
            return this.age;
        }
    
        public String getSex() {
            return this.sex;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public boolean equals(Object o) {
            if (o == this) {
                return true;
            } else if (!(o instanceof test1)) {
                return false;
            } else {
                test1 other = (test1)o;
                if (!other.canEqual(this)) {
                    return false;
                } else {
                    label47: {
                        Object this$name = this.getName();
                        Object other$name = other.getName();
                        if (this$name == null) {
                            if (other$name == null) {
                                break label47;
                            }
                        } else if (this$name.equals(other$name)) {
                            break label47;
                        }
    
                        return false;
                    }
    
                    Object this$age = this.getAge();
                    Object other$age = other.getAge();
                    if (this$age == null) {
                        if (other$age != null) {
                            return false;
                        }
                    } else if (!this$age.equals(other$age)) {
                        return false;
                    }
    
                    Object this$sex = this.getSex();
                    Object other$sex = other.getSex();
                    if (this$sex == null) {
                        if (other$sex != null) {
                            return false;
                        }
                    } else if (!this$sex.equals(other$sex)) {
                        return false;
                    }
    
                    return true;
                }
            }
        }
    
        protected boolean canEqual(Object other) {
            return other instanceof test1;
        }
    
        public int hashCode() {
            int PRIME = true;
            int result = 1;
            Object $name = this.getName();
            int result = result * 59 + ($name == null ? 43 : $name.hashCode());
            Object $age = this.getAge();
            result = result * 59 + ($age == null ? 43 : $age.hashCode());
            Object $sex = this.getSex();
            result = result * 59 + ($sex == null ? 43 : $sex.hashCode());
            return result;
        }
    
        public String toString() {
            return "test1(name=" + this.getName() + ", age=" + this.getAge() + ", sex=" + this.getSex() + ")";
        }
    
        @ConstructorProperties({"name", "age", "sex"})
        public test1(String name, String age, String sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        public test1() {
        }
    
        public static class test1Builder {
            private String name;
            private String age;
            private String sex;
    
            test1Builder() {
            }
    
            public test1.test1Builder name(String name) {
                this.name = name;
                return this;
            }
    
            public test1.test1Builder age(String age) {
                this.age = age;
                return this;
            }
    
            public test1.test1Builder sex(String sex) {
                this.sex = sex;
                return this;
            }
    
            public test1 build() {
                return new test1(this.name, this.age, this.sex);
            }
    
            public String toString() {
                return "test1.test1Builder(name=" + this.name + ", age=" + this.age + ", sex=" + this.sex + ")";
            }
        }
    }
    
    • 1
    • 2

    总结:lombok注解使用起来会很方便,可以多去了解不同注解的作用。
    另贴一些相关的博客:
    lombok 安装使用及一些注解功能:
    https://blog.csdn.net/motui/article/details/79012846
    java Builder:
    http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html
    https://www.cnblogs.com/begin1949/p/4930896.html

  • 相关阅读:
    2020-11-15(第十一周)助教周小结
    2020-11-08(第十周)助教周小结
    2020-11-01助教周小结(第九周)
    Template.
    OO第四单元总结
    OO第三单元总结
    OO第二单元总结
    OO第一单元总结
    AFO
    Codeforces Round #424 (Div. 2)
  • 原文地址:https://www.cnblogs.com/yangsanluo/p/14210651.html
Copyright © 2011-2022 走看看