Lombok 透過在編譯時產生 Java 建構函式來簡化它們的建立。 本指南解釋了三個關鍵的 Lombok 註解:@NoArgsConstructor
、@AllArgsConstructor
和 @RequiredArgsConstructor
.
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) { ... }
因為 name
是 final
。
最佳註解取決於您的特定需求:
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>
這確保了 repository
和 notificationService
在建立 CustomerService
時被初始化。
掌握這些 Lombok 註解可以產生更乾淨、更容易維護的 Java 程式碼。 選擇取決於您的專案對物件初始化和框架相容性的要求。 更多詳情請參閱:了解 Lombok 中 @RequiredArgsConstructor、@AllArgsConstructor 和 @NoArgsConstructor 之間的區別
以上是了解 Lombok 中 @RequiredArgsConstructor、@AllArgsConstructor 和 @NoArgsConstructor 之間的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!