ロンボクで1つのセッター/ゲッターを省略する


232

ロンボクでデータクラスを使いたいのですが。約12のフィールド@Dataがあるため、すべてのセッターとゲッターを生成するために注釈を付けました。ただし、アクセサを実装したくない特別なフィールドが1つあります。

ロンボクはこのフィールドをどのように省略しますか?

回答:


415

@Getterおよび@Setterアノテーションにアクセスレベルを渡すことができます。これは、ゲッターまたはセッターを保護またはプライベートにするのに役立ちます。デフォルトを上書きするためにも使用できます。

を使用すると@Data、デフォルトでアクセサにパブリックアクセスできます。次のように、特別なアクセスレベルNONEを使用して、アクセサーを完全に省略できます。

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

1
完璧です。プライベートフィールドがPOJOであり、@ Delegate()でも注釈が付けられている場合は、プロパティのセットを個別の再利用可能なクラスに抽出するために使用できます。これは、同じプロパティセットを複数のクラスに適用する場合に便利です(プロパティを追加するためのミックスインの一種)。たとえば、さまざまなXML要素のモデリングに適用できる属性のセットを表すミックスイン。
xorcus

Builderで1つのフィールドを省略するのと同じようなことはありますか?
zt1983811

1
属性がビルダーに表示されるべきではないということですか?いいえ、これに直接関係するものはありません。ただし、これ@Builderは関数やコンストラクターだけでなくクラスにも置くことができ、その関数のシグニチャーで現れる属性の設定のみを提供することを覚えておいてください。
マイケルピエフェル

@Dataにはデフォルトでセッターとゲッターが含まれているため、このプロパティのセッターとゲッターは実装されていません。言及することで除外されAccessLevel.NONEます。
Ram

41

@Dataの説明によれば、次のように使用できます。

生成されたすべてのゲッターとセッターは公開されます。アクセスレベルを上書きするには、フィールドまたはクラスに@Setterや@Getterの注釈を明示的に付けます。このアノテーションを(AccessLevel.NONEと組み合わせて)使用して、getterやsetterの生成を完全に抑制することもできます。


0

以下のコードを使用して、セッターとゲッターの作成から除外/除外します。

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

スプリングブート2.3バージョン、これはうまく機能しています。


-3

セッターとゲッターをプライベートとして持っている場合、PMDチェックで表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.