如果list为null,则使用lombok getter初始化列表?

L42*_*L42 17 java lombok java-8

我目前正在替换所有标准POJO,以便将Lombok用于所有样板代码.我发现自己保留了列表的getter,因为如果列表尚未初始化,我想返回一个空列表.也就是说,我不希望getter返回null.如果有一些我不知道的lombok魔法可以帮助我避免这样做吗?

生成代码的示例

private List<Object> list;
public Object getList(){ return list; }
Run Code Online (Sandbox Code Playgroud)

我想要的是:

private List<Object> list;
public Object getList(){
    if (list == null) {
        return new ArrayList();
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)

sta*_*ker 11

您可以通过声明和初始化字段来实现此目的.初始化封闭对象时将完成初始化.

private List<Object> list = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

Lomboks @Getter注释提供了一个lazy允许延迟初始化的属性.

 @Getter(lazy=true) private final double[] cached = expensiveInitMethod();
Run Code Online (Sandbox Code Playgroud)

文档


ACl*_*mer 7

我有同样的问题.虽然上述答案在某些方面很有用,但确切的解决方案是使用@Builder@Singular注释Lombok API,如下面给出的代码.

它对我来说非常棒.

@Builder
class MyClass{
    @Singular
    private List<Type> myList;
}
Run Code Online (Sandbox Code Playgroud)

这将使用非null List对象初始化myList.虽然,这个问题很古老.但是,仍然发布这个答案,以帮助像我这样将来会提到这个问题的人.