减少代码量工具-lombok
lombok的作用:消除模版代码
- getter、setter、构造器、toString()、equals()
- 便捷的生成比较复杂的代码,例如一个POJO要转化成构建器模式的形式,只需要一个注解
案例使用介绍:
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()等方法
之前我们的代码是这个样子的
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;
}
}
是不是很繁琐
lombok测试例子:
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/
来源:oschina
链接:https://my.oschina.net/u/863334/blog/674232