我在 Lombok 构建器的这个奇怪问题上伤透了脑筋和时间。
假设我们有一个类
@builder
class DateTest {
@Column (name="insert_time")
private Date curDate;
}
现在运行 findbugs 时,它会提示此错误 EI_EXPOSE_REP2。原因是构建器不使用 Date 对象的副本。
正确的解决办法是什么?关键是我不想将日期数据类型更改为 String 只是为了解决方法,并且我不想抑制 findbugs 错误,因为它实际上并不能解决我们的问题。有人找到合适的修复方法吗?
最佳答案
Lombok 无法实现这一点。 Lombok 构建器不会创建副本,构造函数或 setter 也不会。正确的修复方法是不使用自动生成的构建器,至少在类级别不使用。
您可以通过使用构造函数来解决这个问题,它会为您进行复制:
@Builder
private DateTest createDateTest(Date curDate) {
…
}
当然,您无法从自动生成的构造函数中获利,但至少您获得了构建器。
关于java - Findbugs 使用 Lombok 构建器创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051692/