1

クラス B を含む単純なクラス A を持つ場合、null の場合にクラス b の新しいインスタンスを作成するロンボク注釈はありますか?

public class A {

   @Getter
   @Setter
   private B b;

}
4

1 に答える 1

5

残念ながらその機能は存在しません。ドキュメントには、注釈の多数の構成キーがリストされていますが、目的の機能はリストされていません。

最近、誰かがLombok GitHub ページで次のようなものを求めました:

このシナリオでは、この機能が気に入っています。

@Getter(lazy = true) private List<String> foo = new ArrayList<>(); 次のようなものを生成します。

private List<String> foo;
public List<String> getFoo() {
    if (this.foo == null) {
        this.foo == new ArrayList<>();
    }
    return this.foo;
}

もちろん、ダブルチェック ロックまたは AtomicReference を使用することもできますが、ここでのポイントは、null 参照よりも空のリストを取得したいということです。これは、たとえば、Lombok でサイズを縮小するのに適した JAXB クラスの一般的なイディオムです。

したがって、この機能は (まだ?) 実装されていません。もし私があなたなら、これらの場合に注釈を使用することを避け、代わりに必要なメソッドを手動で作成します。


GitHub の問題は 2020 年 2 月 20 日に保留されました。動機の一部は次のとおりです。

また、getter の呼び出しには明らかな副作用があり、それは非常に悪い考えのように思えます。レイジー ゲッターの現在の impl は問題ありません。なぜなら、そもそもフィールドに実用的にアクセスすることはできず、ゲッターは冪等であるように見えるからです。これは、フィールドにアクセス可能なままである提案とは対照的です。

これにより、機能が実装される可能性がさらに低くなると思います。

于 2016-06-28T19:18:39.240 に答える