java - Findbugs 使用 Lombok 构建器创建问题

标签 java builder findbugs lombok

我在 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/

相关文章:

java - 从Java代码构造Kotlin类的实例

design-patterns - 使用什么设计模式来生成多个模拟?

dependency-injection - findbugs:读取@autowired forunit test 上的未写字段

java - 如何获取 Android 中传入和传出彩信的总数?

java - For 循环/LinkedList 运行时间很慢

design-patterns - 构建器模式和模板方法之间的差异(构建器与模板)

java - 依赖默认编码

java - 自定义注释以抑制特定的 FindBugs 警告

java - 查找 java 源代码中执行次数最多的部分

java - java servlet 中什么更有效或更正确 - 使用 HttpServletRequest、HttpServletResponse 通过 Cookie 或参数传递数据?