2016-12-20 4 views
3

Lombok feature-listを精査した後、特にGetter/Setter@Valueの注釈のドキュメントを調べたところ、@Getterによって生成されたコードを抑制する設定が見つかりませんでした。実際にプロジェクトロンボク - 値の注釈:@Getterを抑制することは可能ですか?

、@valueは、速記のためである:私はしませんので、これは重要です

@Getter最終@ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = trueを、レベル= AccessLevel.PRIVATE)自身が変更可能なオブジェクトへの参照をリークさせたい。

有効なJavaは、「アイテム39:必要に応じて防御的なコピーを作成する」でこのタイプの問題を参照します。 @Witherは、実際の防御的なコピーを作成することでこの問題を部分的に解決できるように思われますが、変更可能であるかどうかにかかわらず、これまでの属性を漏らさないようにしたいと考えています。

@Getterを省略した独自の@Value注釈を転記することは可能ですが、そのような設定が既に存在する場合は、コードベースに不当な複雑さを追加することはありません。

+0

'@ Getter'を使いたくない場合、' @Value'も省略しなければならないようです... '@ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = true、level = AccessLevel.PRIVATE) 'の代わりに' @ Getter'を使用していますか? (または、代わりに '@ Setter'または' @Wither'を使用してください) – Roland

+0

はい、動作します。それはちょうどそうです... Muddy –

+0

一方、あなたのユースケースは何とか特別です。私はそこにそれらの3〜4の注釈を入れても大丈夫だと思います。少なくともあなたは自分で残りの部分を書く必要はありません。なぜ特別なのですか?まあ...フィールド/値に実際にアクセスできない場合、半不変型のヘルプは何ですか? – Roland

答えて

4

あなたは使用することができます @Value @Getter(AccessLevel.NONE)

AccessLevel.NONEはゲッターを生成しないためにロンボクを指示します。それはあなたが今できる最善のことです。

関連する問題