Ich verwende Hibernate Validator und zu versuchen, ein wenig util Klasse zu erstellen:Java Generika Frage - Klasse <T> vs T?
public class DataRecordValidator<T> {
public void validate(Class<T> clazz, T validateMe) {
ClassValidator<T> validator = new ClassValidator<T>(clazz);
InvalidValue[] errors = validator.getInvalidValues(validateMe);
[...]
}
}
Frage ist, warum muss ich den Class<T> clazz
Parameter liefern, wenn new ClassValidator<T>(clazz)
Ausführung? Warum können Sie nicht Folgendes angeben:
T
wie inClassValidator<T>(T)
?validateMe.getClass()
wie inClassValidator<T>(validateMe.getClass())
ich Fehler, wenn ich versuchen, beide Optionen zu tun.
Bearbeiten: Ich verstehe, warum # 1 nicht funktioniert. Aber ich verstehe nicht, warum # 2 nicht funktioniert. Ich erhalte derzeit diesen Fehler mit # 2:
cannot find symbol
symbol : constructor ClassValidator(java.lang.Class<capture#279 of ? extends java.lang.Object>)
location: class org.hibernate.validator.ClassValidator<T>
Hinweis: Hibernate-API-Methode ist (here)
Leider funktioniert nicht, siehe meine Antwort auf @ Jhericos Beitrag. –
Ich habe ein Update gemacht, es sollte funktionieren. – Bozho
Danke, die '(Klasse)' war der Schlüssel! –