当前位置: 首页 > 知识库问答 >
问题:

Lombok:单数生成器和默认值

周祺
2023-03-14

龙目岛的版本是1.18.0。

我在类级别设置了@Builder

当我尝试为列表变量设置默认值时:

@Builder.Default
@Singular
private List<Class<? extends Exception>> retryTriggers = Lists.newArrayList(Exception.class);

我得到一个错误:

Error:(46, 5) java: @Builder.Default and @Singular cannot be mixed.

除了自己编写生成器之外,还有其他方法吗?

共有1个答案

公羊新
2023-03-14

我建议用以下方法替换生成的Builder()方法:

@Builder
class ExceptionHandler {
    @Singular
    private final List<Class<? extends Exception>> retryTriggers;

    public static ExceptionHandlerBuilder builder() {
        return new ExceptionHandlerBuilder().retryTrigger(Exception.class);
    }
}
 类似资料:
  • 我有两个类,其中父类在构建时需要来自子类的一些属性。有没有一种方法可以使用lombok构建器来支持这一点? Parent.java 小孩JAVA 上面的编译失败,并显示消息 错误:无法从静态上下文@SuperBuilder引用非静态方法getRequest estType()

  • 问题内容: 我正在将Lombok项目与Spring Data JPA一起使用。有什么方法可以将Lombok 与JPA默认构造函数连接? 码: 据我所知,JPA需要默认的构造函数,该构造函数被注解覆盖。有什么解决方法吗? 这段代码给我错误: 问题答案: 更新 根据反馈和John的回答,我已更新了不再使用or的答案,而是通过和创建访问器和变量,通过创建默认构造函数via,最后我们创建了构建器通过via

  • 我的API定义如下: 我们使用生成代码。 生成的API参数:

  • 问题内容: 我有一个对象 我用两种方式初始化它 这是输出 似乎builder没有获得默认值。我在属性中添加了注释,对象现在看起来像这样 这是控制台输出 我怎样才能使他们俩都成为? 问题答案: 我的猜测是,这是不可能的(没有删除代码)。但是,为什么不仅仅实现所需的构造函数呢?Lombok旨在使您的生活更轻松,如果Lombok无法解决某些问题,请按照老式的方式进行操作。 控制台输出:

  • 简单地创建setter和防止NULL是不起作用的。我可以显式地写出AllArgsConstructor,但这(在某种程度上)违背了Lombok的目的。不是一个可怕的解决方案,但也不理想。 有人能想出任何解决办法吗?

  • 我使用默认构造函数从子类中设置recordId的值,最初没有使用lombok。最终我决定在这里使用构建器,但现在的问题是lombok构建器在内部覆盖了我的默认构建器,因此从未设置值。