前言
Lombok下载
Lombok引入项目之后,便可以使用 本文记录了在项目中应用Lombok时的使用案例,希望对朋友你有一些帮助。
可以去 下载jar包
-
maven:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
-
gradle:
// https://mvnrepository.com/artifact/org.projectlombok/lombok compile group: 'org.projectlombok', name: 'lombok', version: '1.16.10'
目前最新版本为1.16.10。
初学Lombok的使用时,建议配合Java的编译工具,便于理解Lombok在背后做的事情。
Lombok 安装
使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。先在官网下载最新版本的 JAR 包。
第一次使用的时候我下载的是最新版本的,也就是我现在用的1.16.10 目前版本更新很快。
1.双击下载下来的 JAR 包安装 lombok
我选择这种方式安装的时候提示没有发现任何 IDE,所以我没安装成功,我是手动安装的。如果你想以这种方式安装,请参考官网的视频。
2.eclipse 手动安装 lombok
(1). 将 lombok.jar 复制到eclipse.ini 所在的文件夹目录下
(2). 打开 eclipse.ini,在最后面插入以下两行并保存:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
(3).重启 eclipse
Lombok好处在哪里?
没使用Lombok之前,定义JavaBean时,需要为每个成员定义getter/setter方法,无论手写或者自动生成,过程都不麻烦,但当Bean里的成员蛮多时,看代码的时候就比较心烦,无关的部分越来越多。随着项目的成长,代码的行数也奇迹般的增长,以至于项目经理在评估工作量时都要考虑适时的调整比率,麻烦呀。
@Data注解
通过在在class关键字前增加@Data,Lombok除了自动生成所有非final成员的getter/setter方法外,还有额外的福利,lombok同时生成了toString、equals、hashCode方法,并且完全符合规范,这样缩减了代码的规模,也少了手写toString/equals/hashCode方法的烦恼。
@Data
class Person
{
private String name;
private int age;
private String job;
private Object info;
}
@ToString注解
在调试代码时经常遇到一个问题,查看某个变量的值时,发现变量窗口展示的是一个奇怪的值(或者说对象在JVM内部表示的地址,这其实是toString方法的默认实现);想要查看对象内部各成员的值就需要逐层展开,这样才能看到内部的信息。类似的调试过程烦不胜烦,但对于定义了合适的toString方法的类的对象,调试时查看其内部成员的值则会简单许多,调试器会自动调用对象的toString方法,并将得到的字符串展示在变量值窗口,这无疑为调试带来了莫大便利。但手写toString方法其实非常麻烦,有过相关经历的朋友可能会深有体会。对于某个具体的类来说,出于安全或者性能或者其它方面的考虑,可能并不希望全部成员都出现在toString方法的返回值里。
@ToString(exclude = { "age", "job" }, includeFieldNames = false, doNotUseGetters = true)
class Staff
{
private String name;
private int age;
private String job;
private Object info;
}
@ToString(callSuper = false)
class Student extends Staff
{
private String schoolName;
private int classNo;
}
@EqualsAndHashCode
在项目开发过程中,虽然场景比较少,但仍然不可避免存在需要自定义equals或者hashCode方法的时候,当然这也是头疼的时候。根据《Effective Java》中的建议,equals方法和hashCode方法要同时实现,并且保证一致性。Lombok提供的@EqualsAndHashCode完美的解决了手写equals和hashCode方法时遇到的全部问题,不需要刻意关注底层的实现细节
@EqualsAndHashCode(exclude = { "age", "job" }, doNotUseGetters = true)
class Staff
{
private String name;
private int age;
private String job;
private Object info;
}
@EqualsAndHashCode(callSuper = false)
class Student extends Staff
{
private String schoolName;
private int classNo;
}
@Getter和@Setter
通过这两个注解,可以灵活控制是否为字段提供getter/settere方法,以及getter/setter方法的访问权限。由于使用非常简单,以后就不用看到一大堆的get set 啰。
class Person
{
@Getter
@Setter
private String name;
@Getter
private String schoolName;
@Setter
private int classNo;
@Getter(AccessLevel.MODULE)
private int age;
@Getter(AccessLevel.NONE)
private String job;
@Getter(AccessLevel.PRIVATE)
private Object info;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。