使用lombok简化你的代码
1. 简介
我们在java开发中经常要用实体类bean,需要花时间去添加相应的getter/setter,也许还要去写构造器、equals和ToString等方法,虽然编译器(IntelliJ IDEA快捷键位shift+insert)能够使用快捷键快速加入相应函数。但是加入函数以后bean多了很多类似方法,显得很冗长;一旦修改bean的属性以后,又要重新生成这些getter/setter方法,有时候也出现忘记修改的失误。
因此我们使用lombok简化bean结构,使得代码更加简单和清晰。
Lombok官方解释为:
Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code.
lombok通过注解实现自动引入,下面介绍常用的几个注解:
-
@Data
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。 -
@Getter/@Setter
自动生成Getter/Setter函数 -
@EqualsAndHashCode
-
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载。
2. 使用
2.1 引入maven依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
2.2 idea安装lombok插件
并设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。
2.3 示例代码
(1)示例bean
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class LombokBean {
private int id;
private String name;
}
(2)使用测试
import org.junit.Assert;
import org.junit.Test;
public class TestLombokBean {
@Test
public void Test_GetBeanUserParam(){
//输入
int id = 10;
String name = "myLombok";
LombokBean lombokBean = new LombokBean(id, name);
//预期
String expect = "myLombok";
//实际
String actual = lombokBean.getName();
Assert.assertEquals(expect,actual);
}
}
(3)验证
将java文件编译成class文件
javac LombokBean.java -cp lombok-1.18.6.jar
然后进行反编译,可得
public class LombokBean {
private int id;
private String name;
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public void setId(int paramInt) {
this.id = paramInt;
}
public void setName(String paramString) {
this.name = paramString;
}
public boolean equals(Object paramObject) {
if (paramObject == this) return true;
if (!(paramObject instanceof LombokBean)) return false;
LombokBean localLombokBean = (LombokBean) paramObject;
if (!localLombokBean.canEqual(this)) return false;
if (getId() != localLombokBean.getId()) return false;
String str1 = getName();
String str2 = localLombokBean.getName();
return str1 == null ? str2 == null : str1.equals(str2);
}
protected boolean canEqual(Object paramObject) {
return paramObject instanceof LombokBean;
}
public int hashCode() {
int i = 1;
i = i * 59 + getId();
String str = getName();
return i * 59 + (str == null ? 43 : str.hashCode());
}
public String toString() {
return "LombokBean(id=" + getId() + ", name=" + getName() + ")";
}
public LombokBean(int paramInt, String paramString) {
this.id = paramInt;
this.name = paramString;
}
}
可以得出,确实自动加了相关函数。
3 总结
本文简单介绍了使用lombok简化java中实体类的代码,由于目前以前不使用lombok,因此没有使用工作中的实际代码。
除了引入依赖,和idea中安装插件稍微有点麻烦以外,lombok在实际使用中可能会有其他坑,边用边完善。
推荐阅读
-
Python生成器的使用方法和示例代码
-
使用Spring Boot集成FastDFS的示例代码
-
[WPF自定义控件库]使用TextBlockHighlightSource强化高亮的功能,以及使用TypeConverter简化调用
-
在Vue项目中使用d3.js的实例代码
-
使用Vue动态生成form表单的实例代码
-
使用vue制作探探滑动堆叠组件的实例代码
-
使用 js 简单的实现 bind、call 、aplly代码实例
-
天下代码一大抄,整个案例的搬是什么鬼!疑似冒充蚂蚁金服高级Java开发工程师?你大爷
-
使用zend studio for eclipse不能激活代码提示功能的解决办法
-
Win10系统电脑在使用浏览器播放视频时蓝屏错误代码0x000008e的多种解决方法