首页 > 解决方案 > 具有接口和验证器的泛型

问题描述

我有:

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 {

我不知道该怎么做。对于任何解释将不胜感激

标签: java

解决方案


正如上面的评论中提到的,在这种情况下并不容易提供帮助,因为验证的类型是未知的,而且当看到泛型类型被不同的 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;
    }

}

推荐阅读