web-dev-qa-db-ja.com

ロンボク:1つの引数のコンストラクターを指定する方法?

Lombokを使用して、1つの引数コンストラクターを指定することは可能ですか?

私の意図は、Lombokアノテーションを使用して、以下のようなコンストラクターを作成することです。

class MyClass {
    private String param;
    private Integer count;

    public MyClass(String param) {
        this.param = param;
    }
}
16
barbara

ドキュメントに見つかりませんでした

これはどうですか: http://projectlombok.org/features/Constructor.html

コンストラクターの一部ではないすべての変数を初期化する必要があります。

@RequiredArgsConstructorは、特別な処理が必要なフィールドごとに1つのパラメーターを持つコンストラクターを生成します。初期化されていないすべての最終フィールドは、パラメーター、および宣言された場所で初期化されていない@NonNullとしてマークされたフィールドを受け取ります。 @NonNullでマークされたフィールドでは、明示的なnullチェックも生成されます。

したがって、以下は1つの引数(param)コンストラクターを作成する必要があります。

@RequiredArgsConstructor class MyClass {
     private String param;
     private Integer count = -1;
}
15
KnutKnutsen

Lombokではフィールドを正確に指定できませんが、3つの注釈から選択できます。と

@RequiredArgsConstructor class MyClass {
    private final String param;
    private Integer count;
}

がんばって。引数は必須であり、インラインで初期化されていない場合、finalまたは@NonNull

12
maaartinus

@RequiredArgsConstructor@NonNullは、上記の問題を解決するための2つの重要なキーです。 @RequiredArgsConstructorは、@NonNullアノテーションが付けられたフィールドを持つコンストラクターを作成するためです。

@RequiredArgsConstructor
class MyClass {
    @NonNull
    private String param;
    private Integer count;


}

これは次と同等です。

class MyClass {
    private String param;
    private Integer count;

    public MyClass(String param) {
        this.param = param;
    }
}
0
HarryCoder