减小代码量工具-lombok

减小代码量工具-lombokjava

lombok的做用:消除模版代码web

  • getter、setter、构造器、toString()、equals()
  • 便捷的生成比较复杂的代码,例如一个POJO要转化成构建器模式的形式,只须要一个注解

案例使用介绍:ide

1.添加pom.xml依赖:函数

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.8</version>
            <scope>provided</scope>
</dependency>

2. 写一个基础类:工具

@Data
@Builder
public class Address {
    private int id;
    private String province;
    private String city;
    private String country;

}

这里须要说明一下,在传统的Java开发中咱们须要重写getter(),setter(),equals(),toString()等方法在这里只须要定义注解便可:测试

  • @Data (toString() equals() hashcode() and getter(),settter())
  • @Builder 定义构造函数

因此在上面的例子中我只须要定义两个注解便可省略大量的getter(),setter()等方法ui

以前咱们的代码是这个样子的this

package com.fastweb.web.model;

import lombok.Builder;
import lombok.Data;
import lombok.extern.log4j.Log4j;

public class Address {
    private int id;
    private String province;
    private String city;
    private String country;

    public Address(int id, String province, String city, String country) {
        this.id = id;
        this.province = province;
        this.city = city;
        this.country = country;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return "Address{" +
                "id=" + id +
                ", province='" + province + '\'' +
                ", city='" + city + '\'' +
                ", country='" + country + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Address address = (Address) o;

        if (id != address.id) return false;
        if (province != null ? !province.equals(address.province) : address.province != null) return false;
        if (city != null ? !city.equals(address.city) : address.city != null) return false;
        return country != null ? country.equals(address.country) : address.country == null;

    }

    @Override
    public int hashCode() {
        int result = id;
        result = 31 * result + (province != null ? province.hashCode() : 0);
        result = 31 * result + (city != null ? city.hashCode() : 0);
        result = 31 * result + (country != null ? country.hashCode() : 0);
        return result;
    }
}

是否是很繁琐code

lombok测试例子:xml

package com.fastweb.web.model;
import lombok.extern.java.Log;
import static org.junit.Assert.*;

@Log
public class AddressTest {
    public static void main(String[] args) {
        Address address = Address.builder().id(1001).city("wuhan").province("hubei").country("china").build();

        log.info(address.toString());
    }

}

这里只需定义@Log注解便可完成log的使用 很是方便 不再须要去定义额外的变量

最后贴一下lombok的使用说明 https://projectlombok.org/features/

相关文章
相关标签/搜索