Java記錄是什麼?如何與建構函式和方法一起使用?


引言

Java不斷發展以滿足現代程式設計需求,其最新功能之一——Java記錄(在JDK 16中引入)簡化了資料建模的任務。本文闡述了Java記錄,詳細介紹了它們如何與建構函式和方法一起使用,以簡化您的Java編碼體驗。

理解Java記錄

Java記錄是一種旨在簡化應用程式中“純資料”表示的類。本質上,它們是不可變的資料載體,用於封裝一些最終欄位(稱為“元件”)以及訪問這些欄位的方法。

在記錄出現之前,開發人員必須為簡單的資料載體類編寫大量樣板程式碼,包括建構函式、getter方法、equals()、hashCode()和toString()方法。Java記錄消除了這種冗餘,從而產生了更簡潔、更易讀的程式碼。

宣告記錄

Java記錄的宣告類似於類,使用`record`關鍵字。以下是一個示例:

Vpublic record User(String name, int age) {}

在上述宣告中,User是記錄,name和age是元件。預設情況下,記錄會生成一個公共建構函式、公共讀取訪問器方法(類似於getter方法)以及equals()、hashCode()和toString()方法。

Java記錄和建構函式

雖然記錄會自動提供一個公共建構函式,但如果要向元件新增驗證或規範化邏輯,則可以宣告一個顯式建構函式。顯式建構函式必須與記錄元件具有相同的引數。以下是一個示例:

public record User(String name, int age) {
   public User {
      if (age < 0) {
         throw new IllegalArgumentException("Age cannot be negative");
      }
      if (name == null || name.isBlank()) {
         throw new IllegalArgumentException("Name cannot be blank");
      }
   }
}   

在這個示例中,建構函式檢查age是否為負數,name是否為空,如果任一條件滿足則丟擲異常。

Java記錄和方法

就像普通類一樣,記錄也可以包含其他方法。但是,請記住,記錄的主要目標是承載資料,因此建議限制其他方法的數量。以下是如何向記錄新增方法:

public record User(String name, int age) {
   public boolean isAdult() {
      return age >= 18;
   }
}

在上面的程式碼中,我們將isAdult()方法新增到User記錄中,該方法根據age元件檢查使用者是否成年。

Java記錄的限制

雖然記錄有其優勢,但它們也有一些限制:

  • 記錄隱式為final,因此不能擴充套件。

  • 記錄不能具有非final欄位。

  • 記錄的每個元件都必須能夠從建構函式引數中提供的狀態明確推匯出來。

  • 記錄旨在作為簡單的資料載體,因此不應過於複雜或包含許多方法。

結論

Java記錄是建立簡單、不可變的資料載體類的強大工具,它減少了樣板程式碼並提高了程式碼的可讀性。它們與建構函式和方法無縫協作,提供了一個簡化的程式設計模型。在您繼續學習Java的過程中,採用和利用記錄的力量無疑將大有裨益。

更新於:2023年7月19日

200 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.