这里是参考了两位大佬的文章,先贴出来,我只是做一个简单的整理,如果需要往深研究,可以看两位大佬的链接
https://blog.csdn.net/motui/article/details/79012846
https://www.cnblogs.com/heyonggang/p/8638374.html
介绍
lombok:其实可以简单理解成,用注解的方式,帮你自动生成一些getter/setter/tostring的代码,这样的话可以简化我们的开发,让代码更加简洁。
安装:
这里只提供一下eclipse的安装方法:
1、下载 http://projectlombok.org/download.html,将 jar 放到 eclipse 安装目录下,和 eclipse.ini 同一级目录。windows 系统是在/eclipse/下,mac系统是在/Eclipse.app/Contents/MacOS/下。
2、在 eclipse.ini 中添加两行配置:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
3、重启eclipse
在pom.xml中加入:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
<scope>provided</scope>
</dependency>
使用:
demo入门:
首先,我们写一个实体类:
public class People {
private String name;
private int age;
}
正常的使用情况,我们就该利用快捷键生成getter/setter/toString/等一系列方法,这样的话,不仅麻烦,而且代码会显得很冗余。
这时候,我们就可以使用@Data注解,直接在类上加注解,然后导包
import lombok.Data;
@Data
public class People {
private String name;
private int age;
}
然后写一个测试类:
@Test
public void test01() {
People p = new People();
p.setName("");
p.getAge();
p.toString();
}
这里我们可以看到,我们在实体类,也就是people这个类中,并没有生成getter/setter方法,我们却依然可以调用,这就是lombok的功能所在了,接下来,我会总结一下各个注解的功能 ,以及使用位置。
总结:
@Data : 注解在类上,这个是最全的注解,会提供getter、setter、equals、canEqual、hashCode、toString,NoArgsConstructor,这里特别注意一下,如果属性是final的,那么不会生成setter方法。
@Getter和@Setter : 该注解使用在类或者属性上,生成对应的getter和setter方法
@NonNull : 该注解使用在属性或构造器上,会生成一个非空的声明,可用于校验参数,如果为空,则抛出一个空指针异常
public class People {
//加注解
@NonNull
private String name;
//等同于
public void setName(String name) {
if(name == null) {
throw new NullPointerException("name");
}else {
this.name = name;
}
}
}
@Cleanup : 自动调用close()方法,封装到try/finally中,比如输入输出流,就可以把final close那一步省略,可以通过value来指定调用方法名称
@EqualsAndHashCode :重新生成equals和hashCode方法,可以通过exclude注解来排除一些属性
// 重新生成equals和hashCode,排除id和shape属性
@EqualsAndHashCode(exclude={"id", "shape"})
@ToString : 在类上使用,生成toString方法,有三个属性
includeFieldNames = true : 是否输出的时候带着属性的名称
exclude = “id” : 排除id字段
callSuper = true : 输出父类的属性
@NoArgsConstructor : 无参构造
@RequiredArgsConstructor : 部分参数构造器 ,类中所有带有@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法
@AllArgsConstructor : 全参构造器,默认不提供无参构造
@Value :作用在类上,会生成所有参数的构造方法,get方法,equals,hashCode,toString方法,注意这里没有setter方法