Lombokを使用して、1つの引数コンストラクターを指定することは可能ですか?
私の意図は、Lombokアノテーションを使用して、以下のようなコンストラクターを作成することです。
class MyClass {
private String param;
private Integer count;
public MyClass(String param) {
this.param = param;
}
}
ドキュメントに見つかりませんでした
これはどうですか: http://projectlombok.org/features/Constructor.html ?
コンストラクターの一部ではないすべての変数を初期化する必要があります。
@RequiredArgsConstructorは、特別な処理が必要なフィールドごとに1つのパラメーターを持つコンストラクターを生成します。初期化されていないすべての最終フィールドは、パラメーター、および宣言された場所で初期化されていない@NonNullとしてマークされたフィールドを受け取ります。 @NonNullでマークされたフィールドでは、明示的なnullチェックも生成されます。
したがって、以下は1つの引数(param
)コンストラクターを作成する必要があります。
@RequiredArgsConstructor class MyClass {
private String param;
private Integer count = -1;
}
Lombokではフィールドを正確に指定できませんが、3つの注釈から選択できます。と
@RequiredArgsConstructor class MyClass {
private final String param;
private Integer count;
}
がんばって。引数は必須であり、インラインで初期化されていない場合、final
または@NonNull
。
@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;
}
}