创建实体通用验证器的最佳实践

时间:2018-06-27 08:53:11

标签: java validation generics

我有一个验证器,用于验证具有javax.validation.constraints批注的实体:

public class EntityValidator {
  void validate(Object obj) {
    ...
  }
}

我的目标是使EntityValidator泛型,但仅接受Entity类:

public class EntityValidator<E extends ???> {
 void validate(E entity) {
    ...
  }
}

这些实体具有@Entity批注,并且都位于同一包中,但是它们都没有一个共同的父类。

  

将适合于同一类型的实体类连接的最佳实践是什么?

我想到的选择

  • 实体实现标记器接口(例如,可序列化)
  • 创建父类(例如BaseEntity)并从其继承实体。
  • 在验证器中仅接受带有@Entity批注的类-不确定是否可以?

1 个答案:

答案 0 :(得分:0)

假设您希望静态实施约束,则第三个选项(通过注释)已退出。

我敢保证,最好的选择是您自己的自定义标记界面-这样您的验证就不会与其他工具进行交互(就像您使用Serializable时一样),这样您的双手就会与继承层次保持联系。