1. 程式人生 > >Lombok的介紹和使用

Lombok的介紹和使用

背景

在日常的開發中,有很多工作都是重複的,比如:
- 我們會定義很多的domain實體類,需要給每個欄位手動新增setter/getter.
- 需要列印物件的時候,需要自己手動的新增toString()方法.
- 給domain新增無參建構函式和所有引數的建構函式.

如果domain修改了屬性的名字或者刪除屬性的名字,上面三種情況都需要程式設計師手動的去修改程式碼.
那Java中有沒有一種方式能夠避免這種重複的勞動呢?那就是使用lombok.

Lombok簡介

Lombok是一個可以通過簡單的註解形式來幫助我們簡化消除一些必須有但顯得很臃腫的Java程式碼的工具,通過使用對應的註解,可以在編譯原始碼的時候生成對應的方法,官網有詳細的使用說明和視訊.
官方地址:

https://projectlombok.org/
gitHub地址: https://github.com/rzwitserloot/lombok

Lombok安裝

要是用Lombok之前,需要在你的開發工具中安裝Lombok.下載lombok.jar

Eclipse的外掛的安裝步驟

先關閉Eclipse
雙擊執行lombok.jar或者使用CMD命令執行 java -jar lombok.jar命令
出現如下圖顯示的介面:
安裝
點選Specify location ... 關聯你的Eclipse工具的 eclipse.exe 檔案
選中之後,點選 Install/Update,接著重啟工具即可.
官網有Eclipse安裝lombok的視訊,就在首頁.

IntelliJ IDEA外掛的安裝步驟:

使用IntelliJ IDEA的同學直接去下載對應的lombok外掛,需要修改配置
settings—>Build,Execution,Deployment—>Compiler—>Annotation Processors中
Enable annotation procession 複選框給勾選上.

Lombok的使用

安裝lombok之後,不要忘記要把lombok.jar這個包加入到你的專案中.
使用Maven的同學新增如下依賴:

<dependency>
    <groupId>
org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.6</version> </dependency>

接下來就可以在我們的類中使用註解的方式給類新增setter/getter方法或者構造方法,下面給同學介紹比較常用的一些註解.

@Getter and @Setter

你可以給任意欄位新增@Getter/@Setter的註解,讓lombok給我們自動的生成setter/getter方法.
沒用lombok前你的程式碼需要這樣寫:

01 public class GetterSetterExample {
02   private int age = 10;
03   private String name;
04
05   public int getAge() {
06     return age;
07   }
08
09   public void setAge(int age) {
10     this.age = age;
11   }
12   
13   protected void setName(String name) {
14     this.name = name;
15   }
16 }

使用了lombok後你的程式碼是這樣的:

01 import lombok.Getter;
02 import lombok.Setter;
03 public class GetterSetterExample {
04    @Getter@Setter 
05    private int age = 10;
06    @Getter@Setter
07    private String name;  
08 }

使用了[email protected],瞬間程式碼簡潔了很多,而且也不用擔心欄位修改後,對應的setter和getter方法需要修改.
[email protected]可以貼在欄位上,是給該欄位提供setter/getter方法.如果貼在類上,表示給該類下的所有欄位新增setter和getter方法,上面的程式碼還可以這樣寫:

01 import lombok.Getter;
02 import lombok.Setter;
03 @Getter@Setter 
04 public class GetterSetterExample {
05    private int age = 10;
06    private String name;  
07 }

@ToString

所有的類都可以使用@ToString註解來生成該類的toString()方法.預設情況下,它將列印你的類名以及每個欄位,按逗號分隔.
沒用lombok前你的程式碼需要這樣寫:

01 public class ToStringExample {
02  private int age;
03  private String name;
04  @Override
05  public String toString() {
06      return "ToStringExample [age=" + age + ", name=" + name + "]";
07  }
08 }

使用了lombok後你的程式碼是這樣的:

01 @ToString
02 public class ToStringExample {
03  private int age;
04  private String name;
05 }

@NoArgsConstructor and @AllArgsConstructor

@NoArgsConstructor:可以給我們定義的類自動的新增無參建構函式.
@AllArgsConstructor:可以給我們定義的類新增所有引數的建構函式.
沒用lombok前你的程式碼需要這樣寫:

01 public class ConstructorExample {
02  private int age;
03  private String name;
04  public ConstructorExample() {
05      super();
06  }
07  public ConstructorExample(int age, String name) {
08      super();
09      this.age = age;
10      this.name = name;
11  }
12 }

使用了lombok後你的程式碼是這樣的:

01 @NoArgsConstructor@AllArgsConstructor
02 public class ConstructorExample {
03  private int age;
04  private String name;

@EqualsAndHashCode

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

@Data

是快捷方式,代表@ToString, @EqualsAndHashCode, @Getter(所有欄位), @Setter(所有欄位)
沒用lombok前你的程式碼需要這樣寫:

01 public class DataExample {
02  private int age;
03  private String name;
04  public int getAge() {
05      return age;
06  }
07  public void setAge(int age) {
08      this.age = age;
09  }
10  public String getName() {
11      return name;
12  }
13  public void setName(String name) {
14      this.name = name;
15  }
16  @Override
17  public String toString() {
18      return "DataExample [age=" + age + ", name=" + name + "]";
19  }
20 }

使用了lombok後你的程式碼是這樣的:

01 @Data
02 public class DataExample {
03  private int age;
04  private String name;
05 }

相關推薦

Lombok介紹、使用方法總結

1 Lombok背景介紹 官方介紹如下: Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boiler

Lombok介紹使用

背景 在日常的開發中,有很多工作都是重複的,比如: - 我們會定義很多的domain實體類,需要給每個欄位手動新增setter/getter. - 需要列印物件的時候,需要自己手動的新增toString()方法. - 給domain新增無參建構

022day--python 模塊介紹time模塊

字符串 命令行 strong __main__ rand time 5-0 可維護 .com 一、模塊的含義   在計算機程序的開發過程中,隨著程序代碼越寫越多,在一個文件裏代碼就會越來越長,越來越不容易維護。   為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文

ipmi介紹使用

ipmiipmi介紹和使用IPMI 是什麽IPMI 工作原理IPMI 能幹嘛IPMI FunctionalitySide-Band and Out-of-Band利用ipmi可以實現以下功能IPMI 怎麽做註意服務器端 設置客戶端 設置本地操作系統裏操作遠程操作 IPMI 是什麽?The Intelligen

C#多線程之旅(1)——介紹基本概念

隔離 cnblogs 影響 3-0 同時 ima 並行 logic mes 閱讀目錄 一、多線程介紹 二、Join 和Sleep 三、線程怎樣工作 四、線程和進程 五、線程的使用和誤用 原文地址:C#多線程之旅(1)——介紹和基本概念 C#多線程之旅目錄: C#

哈夫曼編碼(Huffman coding)的那些事,(編碼技術介紹程序實現)

信號 truct 依次 while 交換 需要 .text 示例 system 前言   哈夫曼編碼(Huffman coding)是一種可變長的前綴碼。哈夫曼編碼使用的算法是David A. Huffman還是在MIT的學生時提出的,並且在1952年發表了名為《

轉Android進程間通信(IPC)機制Binder簡要介紹學習計劃

trac named 組成 get tle 能力 計劃 英文 其中 轉自:http://blog.csdn.net/luoshengyang/article/details/6618363/ 在Android系統中,每一個應用程序都是由一些Activity和Ser

遞歸的簡要介紹理解

oct char html col charset filo type ctype doctype 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta cha

建材O2O防偽管理系統功能介紹優勢

建材O2O防偽管理 建材產品造假現象屢禁不止,原因可能是消費者對於建材知識欠缺,加上企業監管不到位,以至於被不良商家盯上。建材企業如何避免這種現象的發生,讓消費者對企業恢復信心。 建材O2O防偽管理系統怎麽應用 建材O2O防偽管理系統,用戶通過微信掃一掃功能識別二維碼,直接關註品

iOS多線程---NSOperation介紹使用

star cati log 對象 sop exec 使用 sin 方式 1. NSOperation實現多線程編程,需要和NSOperationQueue一起使用。 (1)先將要執行的操作封裝到NSOperation中 (2)將NSOperation對象添加到NSOper

《俠盜獵車手4》遊戲介紹下載

ont 爭奪 其中 style ans tony 問題 補丁 地址 《俠盜獵車手4》 (Grand Theft Auto IV),是由Rockstar Games遊戲公司發行的一款圍繞犯罪為主題的開放式動作冒險遊戲。該遊戲於2008年4月29日登陸PlayStati

Furure的簡單介紹使用

bpa cfb idm fat pwm actions ddl effect knn 引子: 上圖是兩個系統交互的情況,現在我想將對外系統的調用做成異步實現,那麽就需要考慮兩個問題: 主線程可以得到異步線程的結果,在得到結果之後再進行operation-4 ?主線程如何得

java Semaphore的介紹使用

一個 lease 操作 cnblogs 偽代碼 數據 app println pool 一個計數信號量。從概念上講,信號量維護了一個許可集。如有必要,在許可可用前會阻塞每一個 acquire(),然後再獲取該許可。每個 release() 添加一個許可,從而可能釋放一個正在

一致性Hash簡單介紹使用

mes red second count main ace 背景 -- file 背景: 一致性Hash用於分布式緩存系統,將Key值映射到詳細機器Ip上,而且添加和刪除1臺機器的數據移動量較小,對現網影響較小 實現: 1 Hash環:將節點

jar包war包的介紹區別

jar war 包 JavaSE程序可以打包成Jar包(J其實可以理解為Java了),而JavaWeb程序可以打包成war包(w其實可以理解為Web了)。然後把war發布到Tomcat的webapps目錄下,Tomcat會在啟動時自動解壓war包。JAR(Java Archive,Java 歸檔文

HTML5的自定義屬性data-*詳細介紹JS操作實例

select 文章 red data scrip style box 實例 width 這篇文章主要介紹JS操作HTML自定義屬性的方法, 以實例形式分析了html中自定義屬性的設置與對應的javascript操作技巧 具體如下: HTML代碼如下(其中的d

awk命令介紹常見使用方法

awkawk、sed、grep這三個命令並稱為文本處理三劍客,但是awk的功能遠遠多出其他兩個命令很多。最初由貝爾實驗室研制。後來GUN組織在awk的基礎上研制了gawk,現在我們在Linux使用的一般都是gawk這個命令,但是為了一些習慣,將awk作為gawk的鏈接,也就是說,現在在bash中使用awk還是

【轉】jar包war包的介紹區別

lac rep 理解 j2e 浪費時間 需要 適合 格式 nbsp JavaSE程序可以打包成Jar包(J其實可以理解為Java了),而JavaWeb程序可以打包成war包(w其實可以理解為Web了)。然後把war發布到Tomcat的webapps目錄下,Tomcat會在啟

Redis 實踐1- redis介紹安裝

部分 rdb eve devel 請求 /dev/ 兩種 gcc replay redis是一個key-value存儲系統,官方站點 http://redis.io 和memcached類似,但支持數據持久化 支持更多value類型,除了和string外,還支持hash

初識LVS(一)——LVS介紹LVS的NAT工作模式

lvs;natLVS介紹集群按照類型劃分可以分為:LB負載均衡型;HA高可用型;HP高性能型。LVS(linux virtual machine)是一款國人編寫用於LB負載均衡型被收錄進Linux內核的工具。LVS由ipvs和ipvsadmin組成,ipvs工作在netfilter框架上,而ipvsadm則是