ホームページ > Java > &#&チュートリアル > ロンボク島の @RequiredArgsConstructor、@AllArgsConstructor、および @NoArgsConstructor の違いを理解する

ロンボク島の @RequiredArgsConstructor、@AllArgsConstructor、および @NoArgsConstructor の違いを理解する

Mary-Kate Olsen
リリース: 2025-01-24 00:09:10
オリジナル
530 人が閲覧しました

Lombok は、コンパイル時に Java コンストラクターを生成することで、Java コンストラクターの作成を簡素化します。 このガイドでは、Lombok 語の 3 つの主要なアノテーション、@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: これは、クラス フィールドごとに 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.適切な注釈の選択

最適なアノテーションは、特定のニーズによって異なります。

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 の作成時に notificationServiceCustomerService が確実に初期化されます。

3.結論

これらの Lombok アノテーションをマスターすると、Java コードがよりクリーンで保守しやすくなります。 選択は、オブジェクトの初期化とフレームワークの互換性に関するプロジェクトの要件によって異なります。 詳細については、「Lombok の @RequiredArgsConstructor、@AllArgsConstructor、および @NoArgsConstructor の違いを理解する

」を参照してください。

以上がロンボク島の @RequiredArgsConstructor、@AllArgsConstructor、および @NoArgsConstructor の違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート