Похоже на этот вопрос .У меня есть интерфейс DateRangeModel
:
Я использую это для автоматической проверки дат в реализаторах:
public interface DateRangeModel {
@ApiModelProperty(value = "From date. Must be less than to date.")
@Column()
Date getFromDate();
void setFromDate(Date date);
@ApiModelProperty(value = "To date. Must be greater than to date.")
@Column()
Date getToDate();
void setToDate(Date date);
/**
* Checks that if both dates are populated, a valid date range is used.
*
* @return true if the date is a valid range.
*/
@AssertTrue(message = "To date must be greater than or equal to from date.")
@JsonIgnore
default boolean areDatesValid() {
if (getToDate() != null && getFromDate() != null) {
return !getFromDate().after(getToDate());
}
return true;
}
}
Я реализую это так:
@EqualsAndHashCode
@Data
@Builder
public class BirthdayParty implements DateRangeModel {
Date fromDate;
Date toDate;
String name;
}
Что компилируетсяи, кажется, работает, но я получаю эту ошибку при запуске PMD:
Returning a reference to a mutable object value stored in one of the object's fields exposes the internal representation of the object.
Как я могу либо выполнить то, что я хочу (интерфейс с проверкой даты до / от), без необходимости реализовывать методы setDate во всехреализаторы (которые, я думаю, победили бы цель)?