ホームページ >Java >&#&チュートリアル >ロンボク島の @RequiredArgsConstructor、@AllArgsConstructor、および @NoArgsConstructor の違いを理解する
Lombok は、コンパイル時に Java コンストラクターを生成することで、Java コンストラクターの作成を簡素化します。 このガイドでは、Lombok 語の 3 つの主要なアノテーション、@NoArgsConstructor
、@AllArgsConstructor
、@RequiredArgsConstructor
について説明します。
1.1 @NoArgsConstructor
: このアノテーションは、引数のないコンストラクターを生成します。 初期値を指定せずにクラス インスタンスを作成する場合に便利です。 例:
<code class="language-java">import lombok.NoArgsConstructor; @NoArgsConstructor public class Example {}</code>
Lombok は、public Example() {}
と同等のコンストラクターを作成します。
1.2 @AllArgsConstructor
: これは、クラス フィールドごとに 1 つの引数を取るコンストラクターを生成します。オブジェクト作成時にすべてのフィールドを初期化するのに最適です。 例:
<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 の違いを理解する
」を参照してください。以上がロンボク島の @RequiredArgsConstructor、@AllArgsConstructor、および @NoArgsConstructor の違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。