首頁 > Java > java教程 > Lombok 釋放:透過 Getters、Setters、Constructors、Builders 等提高 Java 效率

Lombok 釋放:透過 Getters、Setters、Constructors、Builders 等提高 Java 效率

王林
發布: 2024-07-16 17:46:50
原創
580 人瀏覽過

Lombok Unleashed: Elevating Java Efficiency with Getters, Setters, Constructors, Builders, and More

龍目島計畫簡介

Project Lombok 是一個流行的 Java 函式庫,旨在透過提供在編譯時自動產生常見 Java 程式碼的註解來節省大量時間和精力,從而減少樣板程式碼並提高編碼人員的工作效率

什麼是龍目島計畫?

Lombok 專案透過提供註解來解決 Java 的冗長問題,這些註解消除了手動編寫重複程式碼建構(例如 getter、setter、建構子、equals、hashCode 和 toString 方法)的需求。透過使用 Lombok 註解來註解欄位或類,編碼人員可以指示編譯器自動產生這些方法,從而減少樣板程式碼量並使 Java 類別更加緊湊和可讀。

我們為什麼使用 Lombok 專案?

在 Java 中使用 Project Lombok 具有多項引人注目的優勢,有助於提高生產力、程式碼品質和可維護性。
以下是選擇龍目島計畫的幾個理由。
它減少了“樣板代碼”。
它還提高了程式碼的可重用性和可讀性。
實作起來非常簡單,沒有任何複雜性。
輕鬆與“IDE”整合。

如何在 Maven 專案上用 Java 實作 Lombok

我們的大部分專案都是基於Maven的。因此,我們只需將「Project Lombok」依賴項新增至專案中存在的「Pom.xml」檔案中即可。

前往maven儲存庫並從那裡複製Lombok Maven儲存庫,在「Pom.xml」中新增最新的lombok依賴項並儲存,然後重新整理專案。

Java 中 Lombok 專案的 Getters、Setter 功能

在 Java 中,迄今為止最常見的做法是使用「Java Beans」模式來新增 getter 和 setter。大多數 IDE 會自動為這些模式產生程式碼。

讓我們透過程式碼在「資料物件」和「資料工廠」的幫助下建立 getter 和 setter 來理解這個方法:

沒有 Lombok 的資料物件

雖然手動建立getter 和setter 方法的傳統JavaBeans 方法可以完成工作,但它有幾個缺點和限制,使其不太理想,特別是在現代Java 開發環境中,其缺點主要在Lombok 中被涵蓋。

因此,我們喜歡使用 Lombok 模式,而不是這個。以下是它在 Java 中的實作方式:

Java 中 Lombok 專案的建構子特性

沒有 Lombok 的建構函數,我們必須手動定義每個建構函數,這可能很乏味且容易出錯,特別是對於具有許多欄位的類別。此外,我們需要處理各種建構函式配置,這會增加程式碼的複雜度。

Lombok 透過 @NoArgsConstructor、@AllArgsConstructor 和 @RequiredArgsConstructor 註解簡化了這個過程。

沒有 Lombok 的建構子

使用 Lombok 註解減少了需要手動編寫的樣板程式碼量。使用 Lombok,您只需註解類別和字段,建構函數就會根據指定的條件自動產生。這會導致程式碼更乾淨、更簡潔。

各種龍目島特徵和屬性

  1. ToString 生成
  • 在 Java 中,toString() 是 java.lang.Object 類別中定義的方法,其作用是傳回物件的字串表示形式。 toString() 方法被 Java 中的所有類別繼承,它在 Object 類別中的預設實作傳回一個字串,其中包含類別名稱後跟「at」符號 (@) 以及物件哈希碼的十六進位表示形式。
  • 但是,Object 提供的 toString() 的預設實作對於特定類別可能並不總是有意義或有用。因此,開發人員的常見做法是在自己的類別中重寫 toString() 方法,以提供更好地描述物件的狀態或屬性的自訂字串表示形式。
  • 根據我們的範例,Profile 類別可能會重寫 toString() 以傳回包含名字、姓氏、職稱、年齡資訊的字串。重寫 toString() 允許以人類可讀的格式輕鬆列印或記錄物件訊息,這有助於調試、記錄或向使用者顯示訊息。
  • 如果不使用 ToString Lombok 註釋,我們必須在 Profile 類別中手動實作 toString() 方法。我們連接名字、姓氏、職稱和年齡欄位以建立所需的字串表示形式。這種手動實作實現了與 Lombok 的 @ToString 註解相同的結果。

不使用 ToString 註解功能

  • @ToString 註解為類別產生一個 toString() 方法,提供其欄位的字串表示形式。當我們豐富我們的資料模型時,無需自己編寫和維護它。
  • 使用此註釋,在設定檔實例上呼叫 toString() 將傳回一個包含其欄位值的字串。
  • @Exclude 註解對於各種不同的註解都很有用,例如 Getters、Setter、ToString、EqualAndHashCode 等。讓我們透過 @ToString 註解範例來了解這一點。
  • 透過使用@ToString(exclude = {「designation」})註解指定欄位
  • Lombok 不將其包含在 @ToString 產生的 toString() 方法中。如果您想避免在物件的字串表示形式中顯示某些字段,這會很有用。

2。 EqualAndHashCode 產生

  • 在Java中,equals()和hashCode()是兩個常用的方法,分別用來實現物件相等和雜湊碼產生。
  • equals() 方法:equals() 方法用來比較兩個物件是否相等。預設情況下,Object 類別提供的 equals() 方法比較物件引用,這表示僅當比較的兩個物件是記憶體中的相同實例時,它才會傳回 true。然而,通常需要重寫自訂類別中的 equals() 方法,以基於物件屬性定義有意義的相等概念。
  • hashCode() 方法:hashCode() 方法用於產生物件的雜湊碼值。哈希碼是表示物件狀態的整數值,通常用於基於哈希的資料結構(例如雜湊表)。 hashCode() 方法很重要,因為它允許在基於雜湊的集合中有效地儲存和檢索物件。
  • 在我們的範例中,我們手動實作並重寫了 equals() 方法來比較兩個 Profile 物件的欄位是否相等,以及 hashCode() 方法來根據欄位產生雜湊碼。
  • 我們使用 java.util.Objects 類別中的 Objects.equals() 方法來比較欄位是否相等,並使用 Objects.hash() 方法來產生雜湊碼。

不使用 EqualAndHashCode 註解功能

  • @EqualsAndHashCode 註解根據類別的欄位產生 equals() 和 hashCode() 方法。
  • 透過這個註解,Lombok 使用類別的所有欄位產生 equals() 和 hashCode() 方法。
  • 這消除了手動實現這些方法的需要,減少了樣板程式碼並提高了程式碼的可維護性。

3。資料註解
如果不使用 @data 註釋,我們必須手動在程式碼中實作 getter、setter 和 Constructors 函數。

  • 不使用資料註解功能

  • @data 註解是一個方便的快捷方式,它捆綁了 @Getter、@setter、@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode 和更多註釋。

  • 使用@data,Lombok根據類別中聲明的欄位自動為我們產生這些方法。這顯著減少了我們需要編寫和維護的樣板程式碼量,使我們的程式碼更加簡潔和可讀。

  1. 建構器模式
  • 回到我們的 Profile 範例,建構一個新實例需要使用一個可能包含多個四個參數的建構函數,當我們向類別中引入其他屬性時,這項任務會變得很笨重。
  • 值得慶幸的是,Lombok 透過其 @builder 功能提供了一個強大的解決方案,這有助於利用建構器模式來建立新實例。讓我們將此功能整合到我們的 Profile 類別中。

套件org.example.dataobjects;

導入lombok.*;

@Getter
@設定者
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(exclude = {"designation"})
@EqualsAndHashCode
@builder
@數據
公開課簡介{
私有字符串名字;
私有字符串姓氏;
私有字串指定;
私有整數年齡;

public static void main(String[] args) {

// 使用建構器建立 Profile 的實例
設定檔 profile = Profile.builder()
.firstName("部分")
.lastName("Kathrotiya")
.designation("QA 自動化工程師")
.年齡(23)
.build();
}
}

德倫博克

  • Delombok 是 Lombok 專案提供的工具,它可以逆轉 Lombok 註解的效果,本質上是「delombok 化」你的程式碼。它允許您透過擴展註解並將其替換為它們將生成的相應樣板程式碼來將包含 Lombok 註解的 Java 原始程式碼轉換為純 Java 程式碼。
  • Delombok 的主要目的是促進與不直接支援 Lombok 註解的環境或工具的兼容性和互通性。例如,如果您需要與開發環境中沒有安裝Lombok 的開發人員共用您的程式碼,或者您想使用不理解Lombok 註解的工具來分析或重構Lombok 註解的程式碼,您可以使用Delombok 進行轉換將程式碼轉換為在這些上下文中可以理解和使用的形式。
  • Delombok 可以透過命令列呼叫或整合到 Maven 或 Gradle 等建置工具中。當您在原始程式碼上執行 Delombok 時,它會處理 Java 檔案、擴展 Lombok 註解並產生沒有任何 Lombok 註解的新 Java 檔案。產生的程式碼在功能上與原始程式碼相同,但不依賴 Lombok。
  • 總體而言,Delombok 是Lombok 專案提供的一個有用的工具,它使用Lombok 註解增強了程式碼庫的互通性和可維護性,使開發人員能夠利用Lombok 的優勢,同時仍然確保與各種開發環境和工具的兼容性。

結論

雖然這篇文章重點介紹了我發現最有用的功能,但 Lombok 提供了大量附加功能和自訂功能。
Lombok 的文檔是寶貴的資源,為每個註釋提供了深入的解釋和範例。如果您對這篇文章感興趣,我強烈建議您深入研究 Lombok 的文檔,以發現更多可能性。
此外,該專案網站還提供了有關跨各種程式設計環境整合 Lombok 的綜合指南。無論您使用 Eclipse、NetBeans、IntelliJ 或其他工具,請放心,Lombok 都能與您的工作流程無縫整合。作為一個經常在 IDE 之間切換的人,我可以證明 Lombok 在所有平台上的多功能性和可靠性。
總體而言,Project Lombok 提供了一套全面的功能,可以簡化 Java 開發、減少程式碼冗長並促進最佳實踐。
Project Lombok 提供了一套全面的功能,可以簡化 Java 測試、減少程式碼冗長並促進最佳實踐。透過合併 Lombok 建構器和 Lombok 構造器,測試人員可以進一步簡化程式碼並提高可維護性。

以上是Lombok 釋放:透過 Getters、Setters、Constructors、Builders 等提高 Java 效率的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板