Findbugs使用Lombok构建器创建问题

时间:2017-02-05 11:49:06

标签: java builder findbugs lombok

我在与龙目岛建设者这个奇怪的问题上打破了我的头脑和时间。

让我们说我们有一个班级

@builder
class DateTest {
 @Column (name="insert_time")
 private Date curDate;
  }

现在在运行findbugs时,它会抱怨此错误EI_EXPOSE_REP2。构建器的原因是不使用Date对象的副本。

它的正确解决方法是什么?关键是我不想将date数据类型更改为String只是为了解决方法,我不想压制findbugs错误,因为它实际上不会解决我们的问题。有人找到了适当的解决方法吗?

1 个答案:

答案 0 :(得分:0)

龙目岛没有办法实现这一目标。 Lombok构建器不会创建副本,也不会构建构造函数或setter。正确的解决方法是不使用自动生成的构建器,至少不是在类级别。

您可以使用构造函数来解决此问题,而不是为您执行复制:

@Builder
private DateTest createDateTest(Date curDate) {
    …
}

当然,你无法从自动生成的构造函数中获利,但至少你得到了构建器。