首頁 >Java >java教程 >了解 Lombok 中 @RequiredArgsConstructor、@AllArgsConstructor 和 @NoArgsConstructor 之間的差異

了解 Lombok 中 @RequiredArgsConstructor、@AllArgsConstructor 和 @NoArgsConstructor 之間的差異

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-24 00:09:10530瀏覽

Lombok 透過在編譯時產生 Java 建構函式來簡化它們的建立。 本指南解釋了三個關鍵的 Lombok 註解:@NoArgsConstructor@AllArgsConstructor@RequiredArgsConstructor.

1. Lombok 建構子註解

Understand the Difference Between @RequiredArgsConstructor, @AllArgsConstructor, and @NoArgsConstructor in Lombok

1.1 @NoArgsConstructor: 此註解產生一個不帶參數的建構子。 對於建立類別實例而不提供任何初始值很有用。 例如:

<code class="language-java">import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Example {}</code>

Lombok 建立一個相當於 public Example() {}.

的建構函數

1.2 @AllArgsConstructor: 這會產生一個建構函數,該構造函數為每個類別欄位採用一個參數。非常適合在物件建立時初始化所有欄位。 例:

<code class="language-java">import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Person {
    private String name;
    private int age;
}</code>

龍目島創建public Person(String name, int age) { ... }

1.3 @RequiredArgsConstructor: 這會為所有 final 欄位和用 @NonNull 註解的欄位產生建構子。 確保基本欄位始終被初始化。例:

<code class="language-java">import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class Person {
    private final String name;
    private int age;
}</code>

Lombok 產生 public Person(String name) { ... } 因為 namefinal

2.選出正確的註解

最佳註解取決於您的特定需求:

2.1 @NoArgsConstructor 使用案例: 當您需要不帶參數的建構函式時使用,這通常是實體類別的 Hibernate 等框架所需要的。 例如:

<code class="language-java">@NoArgsConstructor
@Entity
public class User {
    @Id
    private Long id;
    private String username;
}</code>

2.2 @AllArgsConstructor 使用案例: 在物件建立期間所有欄位都需要初始化時使用。 例:

<code class="language-java">@AllArgsConstructor
public class Order {
    private String orderId;
    private String product;
    private int quantity;
}</code>

這允許Order order = new Order("123", "Laptop", 2);

2.3 @RequiredArgsConstructor 使用案例: 用來確保基本(通常是 final@NonNull)欄位的初始化。 對於服務類別中的依賴注入很有用:

<code class="language-java">@RequiredArgsConstructor
public class CustomerService {
    private final CustomerRepository repository;
    private final NotificationService notificationService;
}</code>

這確保了 repositorynotificationService 在建立 CustomerService 時被初始化。

3.結論

掌握這些 Lombok 註解可以產生更乾淨、更容易維護的 Java 程式碼。 選擇取決於您的專案對物件初始化和框架相容性的要求。 更多詳情請參閱:了解 Lombok 中 @RequiredArgsConstructor、@AllArgsConstructor 和 @NoArgsConstructor 之間的區別

以上是了解 Lombok 中 @RequiredArgsConstructor、@AllArgsConstructor 和 @NoArgsConstructor 之間的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn