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

新手上路,请多包涵

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

生成代码示例

private List<Object> list;
public Object getList(){ return list; }

我想要的是:

 private List<Object> list;
public Object getList(){
    if (list == null) {
        return new ArrayList();
    }
    return list;
}

原文由 L42 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

您可以通过声明和初始化字段来实现这一点。初始化将在封闭对象初始化时完成。

 private List<Object> list = new ArrayList();

Lomboks @Getter 注解提供了一个属性 lazy 允许延迟初始化。

  @Getter(lazy=true) private final double[] cached = expensiveInitMethod();

文档

原文由 stacker 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

它对我来说很棒。

 @Builder
class MyClass{
    @Singular
    private List<Type> myList;
}

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

原文由 ACloudRoamer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题