lombok几个基本注解的使用

lombok是一款在java开发中简洁化代码十分有用的插件工具,这篇博客对较为常用的几种注解进行记录,分享学习心得。

使用lombok注解,目的和作用就在于不用再去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。

首先,用到的几个注解:

  • @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;
}

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()+'\n'+"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 + ")";
    }
}

}

总结: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

                                </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值