java - 为实体创建通用验证器的最佳实践
问题描述
我有一个验证器来验证具有javax.validation.constraints
注释的实体:
public class EntityValidator {
void validate(Object obj) {
...
}
}
我的目标是使 EntityValidator Generic 但只接受 Entity 类:
public class EntityValidator<E extends ???> {
void validate(E entity) {
...
}
}
这些实体具有@Entity 注释并且都在同一个包中,但它们都没有一个共同的父类。
将实体类连接到相同类型的最佳实践是什么?
我想到的选择:
- 实体实现标记接口(例如,可序列化)
- 创建父类(例如 BaseEntity)并从中继承实体。
- 仅在验证器中接受带有
@Entity
注释的类 - 不确定是否可能?
解决方案
假设您希望静态强制执行约束,则第三个选项(通过注释)不可用。
我敢冒险,您最好的选择是您自己的自定义标记界面 - 这样您的验证就不会与其他设施交互(就像您使用Serializable
, 时那样),这样您的双手就不会受到继承层次结构的束缚。
推荐阅读
- javascript - SyntaxError:JSON 输入意外结束 (Node.js)
- android - 如何以编程方式在屏幕底部显示 AdMob 横幅广告?(Kotlin)
- go - 具有并发限制但测试失败的等待组
- reporting-services - 有没有办法在 SSRS 报告中添加可视化以模糊不必要的字段?
- javascript - 下划线是 js 中数字的有效分隔符
- python - 正则表达式魔法,有了它,VS Code 毁了我的整个 Jupyter Notebook
- python - 如何连接表并计算sqlalchemy中指定列的数量?
- angular - 如何从数组中获取对象?
- r - 从 SpatialPolygonsDataFrame 创建镶嵌?
- html - HTML - 另一个图像上的图像触发弹出窗口