冗长的 java代码克星-Lombok

1、解决的问题

在写Java程序的时候常常会遇到以下情形: 
新建了一个Class类,而后在其中设置了几个字段,最后还须要花费不少时间来创建getter和setter方法,toString,equals方法等等。特别是当咱们想修改其中一个字段时,关于这个字段的全部方法都须要跟着修改,这是很使人蛋疼的事情,由于毫无技术可言,比搬砖还要难受。html

2、Lombok来拯救你

lombok项目的产生就是为了省去咱们手动建立getter和setter方法的麻烦,它可以在咱们编译源码的时候自动帮咱们生成getter和setter方法。即它最终可以达到的效果是:在源码中没有getter和setter方法,可是在编译生成的字节码文件中有getter和setter方法java

好比源码文件: dom

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;
}

如下是编译上述源码文件获得的字节码文件,对其反编译获得的结果 是eclipse

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; }  
.
.
.
.
.
.
}

上图后面的代码就不贴了...你们都应该懂。工具

3、速速使用

接下来就介绍Lombok的使用步骤:this

①导入lombok包spa

lombok 的官方网址:http://projectlombok.org/  .net

②lombok安装日志

使用 lombok 是须要安装的,若是不安装,IDE 则没法解析 lombok 注解。code

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:注解在类上;为类提供一个全参的构造方法

4、支持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所在路径] 

5、其余问题 

如今使用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"。 

6、缺点

使用lombok虽然可以省去手动建立setter和getter方法的麻烦,可是却大大下降了源代码文件的可读性和完整性,下降了阅读源代码的温馨度。 

相关文章
相关标签/搜索