Java - 只用一个注解验证多个字段

Java - Validating more than one field with only one annotation

我找到了一个类似的问答 -> How can I validate two or more fields in combination?

但我想在不使用继承的情况下使其可重用。

例如,我想编写一个注释来检查结束日期必须大于开始日期。

class A {
    Date startDate;
    Date endDate;
}

class B {
    Date startDate;
    Date endDate;
}

根据我链接的答案,我需要写2个单独的注释。如何使用单个注释来完成?

您可以使用反射来获取字段值。

  1. 在您链接的示例中,您需要向 @AddressAnnotation 添加 2 个字段:
  • 开始日期字段名称
  • 结束日期字段名
  1. 将它们存储在 MultiCountryAddressValidator 中的 initialize 方法中。
  2. implements ConstraintValidator<AddressAnnotation, Address>更改为implements ConstraintValidator<AddressAnnotation, Object>
  3. isValid方法中使用反射获取开始和结束日期的实际值。