一、解决的问题
在写Java程序的时候经常会遇到如下情形:
新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter和setter方法,toString,equals方法等等。特别是当我们想修改其中一个字段时,关于这个字段的所有方法都需要跟着修改,这是很令人蛋疼的事情,因为毫无技术可言,比搬砖还要难受。
二、Lombok来拯救你
lombok项目的产生就是为了省去我们手动创建getter和setter方法的麻烦,它能够在我们编译源码的时候自动帮我们生成getter和setter方法。即它最终能够达到的效果是:在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法
比如源码文件:
import java.util.Date;
import lombok.Data;
@Data
public class User {
private int id;
private String username;
private String password;
private String name;
private String gender;
private String phone;
private Date registerTime;
private int balance;
}
以下是编译上述源码文件得到的字节码文件,对其反编译得到的结果 是
package com.wxhl.cn.domain;
import java.util.Date;
public class User {
public int getId() { return id; }
public string getUsername() { return username; }
public string getPassword() { return password; }
public string getName() { return name; }
public string getGender() { return gender; }
public string getPhone() { return phone; }
public date getRegisterTime() { return registerTime; }
public int getBalance() { return balance; }
public void setId(int id) { this.id = id; }
public void setUsername(string username) { this.username = username; }
public void setPassword(string password) { this.password = password; }
public void setName(string name) { this.name = name; }
public void setGender(string gender) { this.gender = gender; }
public void setPhone(string phone) { this.phone = phone; }
public void setRegisterTime(date registerTime) { this.registerTime = registerTime; }
public void setBalance(int balance) { this.balance = balance; }
.
.
.
.
.
.
}
上图后面的代码就不贴了...大家都应该懂。
三、速速使用
接下来就介绍Lombok的使用步骤:
①导入lombok包
lombok 的官方网址:http://projectlombok.org/
②lombok安装
使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。
1. 双击下载下来的 JAR 包安装 lombok
我选择这种方式安装的时候提示没有发现任何 IDE,所以我没安装成功,我是手动安装的。如果你想以这种方式安装,请参考官网的视频。
2.eclipse / myeclipse 手动安装 lombok
2.1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下
2.2. 打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
2.3.重启 eclipse / myeclipse
③、注解
Lombok 注解在线帮助文档:http://projectlombok.org/features/index.
几个常用的 lombok 注解:
@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
四、支持lombok的编译工具
①Oracle javac直接支持lombok
②常用的项目管理工具Maven所使用的java编译工具来源于配置的第三方工具,如果我们配置这个第三方工具为Oracle javac的话,那么Maven也就直接支持lombok了
③Intellij Idea配置的编译工具为Oracle javac的话,也就直接支持lombok了。
④Eclipse中使用的不是Oracle javac这个编译工具,而是自己实现的Eclipse Compiler for Java (ECJ).要想使ECJ支持lombok,得进行设置,具体是在Eclipse程序目录中的eclipse.ini文件中添加如下两行设置:
-javaagent:[lombok.jar所在路径]
-Xbootclasspath/a:[lombok.jar所在路径]
五、其他问题
现在使用Intellij Idea作为Java项目的IDE,配置Oracle javac作为编译工具。
现在有一个A类,其中有一些字段,没有创建它们的setter和getter方法,使用了lombok的@Data注解,另外有一个B类,它调用了A类实例的相应字段的setter和getter方法
编译A类和B类所在的项目,并不会报错,因为最终生成的A类字节码文件中存在相应字段的setter和getter方法
但是,IDE发现B类源代码中所使用的A类实例的setter和getter方法在A类源代码中找不到定义,IDE会认为这是错误
要解决以上这个不是真正错误的错误,可以下载安装Intellij Idea中的"Lombok plugin"。
六、缺点
使用lombok虽然能够省去手动创建setter和getter方法的麻烦,但是却大大降低了源代码文件的可读性和完整性,降低了阅读源代码的舒适度。
来源:oschina
链接:https://my.oschina.net/u/2887289/blog/750402