冗長的 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方法的麻煩,可是卻大大下降了源代碼文件的可讀性和完整性,下降了閱讀源代碼的溫馨度。 

相關文章
相關標籤/搜索