2011-11-03 10 views
80

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

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

答えて

162

@Getter@Setterアノテーションにアクセスレベルを渡すことができます。 getterまたはsetterを保護または非公開にするのに便利です。また、デフォルトを上書きするために使用することもできます。

@Dataでは、デフォルトでアクセサにパブリックアクセスできます。あなたは今、このように、完全にアクセサを省略するために、特別なアクセスレベルNONEを使用することができます。

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

パーフェクト。プライベートフィールドがPOJOで、@Delegate()でアノテーションされている場合は、プロパティのセットを別の再利用可能なクラスに抽出するために使用できます。これは、複数のクラス(プロパティを追加するためのmixinの種類)に同じプロパティセットを適用する場合に便利です。たとえば、さまざまなXML要素のモデリングに適用される一連の属性を表すmixinです。 – xorcus

20

@Data descriptionによると、使用することができます:

をすべて生成したゲッターとセッターはパブリックになります。 アクセスレベルを上書きするには、明示的な@Setter または@Getter注釈でフィールドまたはクラスに注釈を付けます。また、この注釈を( でAccessLevel.NONEと組み合わせる)ゲッターの生成を抑制するために使用することもできます。 および/またはセッター。

関連する問題