【问题标题】:Findbugs creating issues with Lombok builderFindbugs 使用 Lombok 构建器创建问题
【发布时间】:2017-06-22 10:40:37
【问题描述】:

在 Lombok builder 的这个奇怪问题上,我费尽心思。

假设我们有一个类

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

现在在运行 findbugs 时会报错 EI_EXPOSE_REP2。 builder 的原因是不使用 Date 对象的副本。

什么是正确的解决方法?关键是我不想将日期数据类型更改为 String 只是为了解决问题,我不想抑制 findbugs 错误,因为它实际上并不能解决我们的问题。有人找到了一些合适的解决方法吗?

【问题讨论】:

  • 一个假设问题是客户端可以将可变日期传递给此类,然后再更改它。

标签: java builder findbugs lombok


【解决方案1】:

Lombok 无法实现这一点。 Lombok 构建器不会创建副本,构造函数或设置器也不会。正确的解决方法是不要使用自动生成的构建器,至少不要在类级别。

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

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

当然,那时你不能从自动生成的构造函数中获利,但至少你得到了构造函数。

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2023-03-12
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多