java - 具有接口和验证器的泛型
问题描述
我有:
Generic interface with method isValid (T obj).
Driver class with parameters such as age, experience, license etc. VaLidator for
Driver Class which checks if Driver is Valid.
所以我需要一个 Driver 类的验证器。
public class Driver <T>{
private String name;
private String surname;
private String secondname;
private int dateofbirth;
private T pass;
private T dateofissue;
public int getDateofbirth() {
return dateofbirth;
}
public T getPass() {
return pass;
}
public T getDateofissue() {
return dateofissue;
}
}
public interface Validator <T> {
boolean isValid (T obj);
}
class DriverValidator<T> implements Validator {
我不知道该怎么做。对于任何解释将不胜感激
解决方案
正如上面的评论中提到的,在这种情况下并不容易提供帮助,因为验证的类型是未知的,而且当看到泛型类型被不同的 getter 使用 2 次时也有点奇怪。dateOfBirth 变量也应该是 long、Date 或 LocalDate。
但无论如何,这里是一个验证器的实现示例来解释技术概念(当然你必须添加更多检查,但想法应该很清楚):
public class DriverValidator<T> implements Validator<Driver<T>> {
@Override
public boolean isValid(Driver<T> driver) {
if (driver==null) {
return false;
}
if (driver.getPass() == null) {
/* e.g. when this field may not be null...*/
return false;
}
// ... do more checks - e.g. check old enough etc.
return true;
}
}
推荐阅读
- python - 批量收集/GatherND
- docker - 我需要 Docker for Kubernetes 吗?
- microservices - 在微服务中不复制数据的“现实世界”解决方案是什么?
- c# - 单击另一个 UserControl 上的按钮后动态加载 UserControl
- javascript - 拒绝应用来自 'http://localhost:3000/css/style.css' 的样式,因为它的 MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型
- rust - 包含具有不同要求和冲突的参数的 Clap arg 组
- reporting-services - 具有基于小数位数的表达式的 SSRS 格式字段
- scala - 创建目录但无法访问它 - Scala Play Framework
- naudio - 如何重新采样波形文件并创建流或字节数组而不是文件?
- javascript - 无法在 IE 11 上将文件属性设置为输入