クラス B を含む単純なクラス A を持つ場合、null の場合にクラス b の新しいインスタンスを作成するロンボク注釈はありますか?
public class A {
@Getter
@Setter
private B b;
}
クラス B を含む単純なクラス A を持つ場合、null の場合にクラス b の新しいインスタンスを作成するロンボク注釈はありますか?
public class A {
@Getter
@Setter
private B b;
}
残念ながらその機能は存在しません。ドキュメントには、注釈の多数の構成キーがリストされていますが、目的の機能はリストされていません。
最近、誰かが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 は問題ありません。なぜなら、そもそもフィールドに実用的にアクセスすることはできず、ゲッターは冪等であるように見えるからです。これは、フィールドにアクセス可能なままである提案とは対照的です。
これにより、機能が実装される可能性がさらに低くなると思います。