【发布时间】:2019-02-14 15:32:43
【问题描述】:
类似于this question。我有一个接口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.
我怎样才能完成我想要的(带有 to/from 日期验证的接口)而不必在所有实现者中实现 setDate 方法(我认为这会破坏目的)?
【问题讨论】: