Java lombok конструктор: FindBugs сообщит EI_EXPOSE_REP: "EI: getMyDate () - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть класс Java, в котором Date является членом данных этого класса.Плагин findbug обнаруживает

, об ошибке сообщит EI_EXPOSE_REP: "EI: getMyDate ()

@AllArgsConstructor
public class User {
  @JsonProperty
  private String id;

  @JsonProperty
  private String name;

  @JsonProperty
  private String surname;

  @JsonProperty
  private Date birthDate;
}

Дальнейшие исследования Я обнаружил, что команда lombok упоминала, что они не исправят проблема . Должен ли я создать свой рукописный конструктор для класса, как показано ниже, или есть альтернатива?

public class User {
  @JsonProperty
  private String id;

  @JsonProperty
  private String name;

  @JsonProperty
  private String surname;

  @JsonProperty
  private Date birthDate;

  public User(final String name, final String surname, final Date birthDate) {
   this.name = name;
   this.surname = surname;
   this.birthDate = new Date(birthDate.getTime());
  }

}

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Да, вам нужен ваш рукописный конструктор.И рукописные геттеры и сеттеры.

То есть, если вы настаиваете на Date().Было много рекомендаций по использованию альтернатив, вы должны рассмотреть их.

0 голосов
/ 24 сентября 2019

Изменяемый объект может поставить под угрозу безопасность или другие важные свойства

Вы должны подумать о чем-то вроде этого

Здесь значение изменяемого объекта, хранящееся в одном из полей объекта, предоставляетвнутреннее представление объекта. Вам следует учитывать, если к экземплярам обращаются из-за ненадежного кода, а непроверенные изменения изменяемого объекта могут поставить под угрозу безопасность или другие важные свойства

Date birthDate;

Date getbirthDate() {
    if(birthDate == null) {
        return null;
    } else {
        return new Date(birthDate.getTime());
    }
}
...