Findbugs создает проблемы с Lombok Builder

Я ломаю голову и время над этой странной проблемой с Lombok builder.

Допустим, у нас есть класс

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

Теперь при запуске findbugs будет выдаваться ошибка EI_EXPOSE_REP2. Причина в том, что строитель не использует копию объекта Date.

Каково правильное решение для этого? Дело в том, что я не хочу менять тип данных даты на String только для обходного пути, и я не хочу подавлять ошибку findbugs, поскольку на самом деле это не решит нашу проблему. Кто-нибудь нашел какое-то правильное решение для этого?


person user3681970    schedule 05.02.2017    source источник
comment
предполагается, что проблема заключается в том, что клиент может передать изменяемую дату в этот класс, а затем изменить ее.   -  person MeBigFatGuy    schedule 07.02.2017


Ответы (1)


С Ломбоком этого добиться невозможно. Строители Lombok не будут создавать копии, ни конструкторы, ни сеттеры. Правильным решением будет не использовать автоматически сгенерированный строитель, по крайней мере, не на уровне класса.

Вы решаете проблему, используя вместо этого функцию-конструктор, которая выполняет копирование за вас:

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

Конечно, тогда вы не сможете извлечь выгоду из автоматически сгенерированного конструктора, но, по крайней мере, вы получите конструктор.

person Michael Piefel    schedule 15.04.2018