首页 > 解决方案 > 为实体创建通用验证器的最佳实践

问题描述

我有一个验证器来验证具有javax.validation.constraints注释的实体:

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

我的目标是使 EntityValidator Generic 但只接受 Entity 类:

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

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

将实体类连接到相同类型的最佳实践是什么?

我想到的选择:

标签: javavalidationgenerics

解决方案


假设您希望静态强制执行约束,则第三个选项(通过注释)不可用。

我敢冒险,您最好的选择是您自己的自定义标记界面 - 这样您的验证就不会与其他设施交互(就像您使用Serializable, 时那样),这样您的双手就不会受到继承层次结构的束缚。


推荐阅读