Я использую валидатор Hibernate и пытаюсь создать небольшой класс утилит:
public class DataRecordValidator<T> {
public void validate(Class<T> clazz, T validateMe) {
ClassValidator<T> validator = new ClassValidator<T>(clazz);
InvalidValue[] errors = validator.getInvalidValues(validateMe);
[...]
}
}
Вопрос в том, зачем мне вводить параметр Class<T> clazz
при выполнении new ClassValidator<T>(clazz)
? Почему вы не можете указать:
T
как в ClassValidator<T>(T)
?
validateMe.getClass()
как в ClassValidator<T>(validateMe.getClass())
Я получаю ошибки, когда пытаюсь сделать оба варианта.
Редактировать : Я понимаю, почему # 1 не работает. Но я не понимаю, почему # 2 не работает. В настоящее время я получаю эту ошибку с # 2:
cannot find symbol
symbol : constructor ClassValidator(java.lang.Class<capture#279 of ? extends java.lang.Object>)
location: class org.hibernate.validator.ClassValidator<T>
Примечание. Метод Hibernate API: ( здесь )