有一个包含类 B 的简单类 A 是否有任何 lombok 注释可以在为空的情况下创建类 b 的新实例?
public class A {
@Getter
@Setter
private B b;
}
有一个包含类 B 的简单类 A 是否有任何 lombok 注释可以在为空的情况下创建类 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,但这里的重点是我宁愿得到一个空列表而不是空引用。例如,这是 JAXB 类中的一个常见习惯用法,可以很好地使用 Lombok 减小大小。
因此,该功能尚未(尚未?)实施。如果我是你,我会避免在这些情况下使用注释,而是手动创建想要的方法。
GitHub issue 于 2020 年 2 月 20 日被搁置。部分动机如下:
此外,这意味着调用 getter 具有明显的可观察到的副作用,这听起来是个非常糟糕的主意。惰性 getter 的当前 impl 很好,因为首先无法从实用的角度访问该字段,并且 getter 似乎是幂等的。这与您的提案相反,该字段仍然可以访问。
我想这使得该功能更不可能实现。