1. 程式人生 > >八:Lombok 安裝、入門 - 消除冗長的 java 代碼

八:Lombok 安裝、入門 - 消除冗長的 java 代碼

官網 常用 分割 所在 三分 ken 字段名 更新 itl

Lombok 安裝、入門 - 消除冗長的 java 代碼


前言:
逛開源社區的時候無意發現的,用了一段時間,覺得還可以,特此推薦一下。
lombok 提供了簡單的註解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 java 代碼。特別是相對於 POJO,光說不做不是我的風格,先來看看吧。

lombok 的官方網址:http://projectlombok.org/

lombok 其實到這裏我就介紹完了,開個玩笑,其實官網上有 lombok 三分四十九秒的視頻講解,裏面講的也很清楚了,而且還有文檔可以參考。
在這裏我就不扯太多,先來看一下 lombok 的安裝,其實這個官網視頻上也有講到啦


lombok 安裝
使用 lombok 是需要安裝的,如果不安裝,IDE 則無法解析 lombok 註解。先在官網下載最新版本的 JAR 包,現在是 0.11.2 版本,我用的是 0.11.0
第一次使用的時候我下載的是最新版本的,也就是我現在用的 0.11.0,到現在已經更新了兩個版本,更新的好快啊 ... ...

1. 雙擊下載下來的 JAR 包安裝 lombok
我選擇這種方式安裝的時候提示沒有發現任何 IDE,所以我沒安裝成功,我是手動安裝的。如果你想以這種方式安裝,請參考官網的視頻。

2.eclipse / myeclipse 手動安裝 lombok
1. 將 lombok.jar 復制到 myeclipse.ini / eclipse.ini 所在的文件夾目錄下
2. 打開 eclipse.ini / myeclipse.ini,在最後面插入以下兩行並保存:
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
3.重啟 eclipse / myeclipse

lombok 註解:
lombok 提供的註解不多,可以參考官方視頻的講解和官方文檔。
Lombok 註解在線幫助文檔:http://projectlombok.org/features/index.
下面介紹幾個我常用的 lombok 註解:
@Data :註解在類上;提供類所有屬性的 getting 和 setting 方法,此外還提供了equals、canEqual、hashCode、toString 方法
@Setter:註解在屬性上;為屬性提供 setting 方法
@Getter:註解在屬性上;為屬性提供 getting 方法
@Log4j :註解在類上;為類提供一個 屬性名為log 的 log4j 日誌對象
@NoArgsConstructor:註解在類上;為類提供一個無參的構造方法
@AllArgsConstructor:註解在類上;為類提供一個全參的構造方法

@Getter / @Setter

  可以作用在類上和屬性上,放在類上,會對所有的非靜態(non-static)屬性生成Getter/Setter方法,放在屬性上,會對該屬性生成Getter/Setter方法。並可以指定Getter/Setter方法的訪問級別。

@EqualsAndHashCode

  默認情況下,會使用所有非瞬態(non-transient)和非靜態(non-static)字段來生成equals和hascode方法,也可以指定具體使用哪些屬性。

@ToString

  生成toString方法,默認情況下,會輸出類名、所有屬性,屬性會按照順序輸出,以逗號分割。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

  無參構造器、部分參數構造器、全參構造器,當我們需要重載多個構造器的時候,Lombok就無能為力了。

@Data

  @ToString, @EqualsAndHashCode, 所有屬性的@Getter, 所有non-final屬性的@Setter和@RequiredArgsConstructor的組合,通常情況下,我們使用這個註解就足夠了。



下面是簡單示例
1.不使用 lombok 的方案

1技術分享
2技術分享public class Person {
3技術分享
4技術分享 private String id;
5技術分享 private String name;
6技術分享 private String identity;
7技術分享 private Logger log = Logger.getLogger(Person.class);
8技術分享
9技術分享 public Person() {
10技術分享
11技術分享 }
12技術分享
13技術分享 public Person(String id, String name, String identity) {
14技術分享 this.id = id;
15技術分享 this.name = name;
16技術分享 this.identity = identity;
17技術分享 }
18技術分享
19技術分享 public String getId() {
20技術分享 return id;
21技術分享 }
22技術分享
23技術分享 public String getName() {
24技術分享 return name;
25技術分享 }
26技術分享
27技術分享 public String getIdentity() {
28技術分享 return identity;
29技術分享 }
30技術分享
31技術分享 public void setId(String id) {
32技術分享 this.id = id;
33技術分享 }
34技術分享
35技術分享 public void setName(String name) {
36技術分享 this.name = name;
37技術分享 }
38技術分享
39技術分享 public void setIdentity(String identity) {
40技術分享 this.identity = identity;
41技術分享 }
42技術分享}
43技術分享


2.使用 lombok 的方案

1技術分享
2技術分享@Data
3技術分享@Log4j
4技術分享@NoArgsConstructor
5技術分享@AllArgsConstructor
6技術分享public class Person {
7技術分享
8技術分享 private String id;
9技術分享 private String name;
10技術分享 private String identity;
11技術分享
12技術分享}
13技術分享


上面的兩個 java 類,從作用上來看,它們的效果是一樣的,相比較之下,很明顯,使用 lombok 要簡潔許多,特別是在類的屬性較多的情況下,
同時也避免了修改字段名字時候忘記修改方法名所犯的低級錯誤。最後需要註意的是,在使用 lombok 註解的時候記得要導入 lombok.jar 包到工程

八:Lombok 安裝、入門 - 消除冗長的 java 代碼