在寫Java程序的時候常常會遇到以下情形:
新建了一個Class類,而後在其中設置了幾個字段,最後還須要花費不少時間來創建getter和setter方法,toString,equals方法等等。特別是當咱們想修改其中一個字段時,關於這個字段的全部方法都須要跟着修改,這是很使人蛋疼的事情,由於毫無技術可言,比搬磚還要難受。html
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; } . . . . . . }
上圖後面的代碼就不貼了...你們都應該懂。工具
接下來就介紹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:註解在類上;爲類提供一個全參的構造方法
①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方法的麻煩,可是卻大大下降了源代碼文件的可讀性和完整性,下降了閱讀源代碼的溫馨度。