J'utilise Hibernate Validator et essayer de créer une petite classe util:Question sur les génériques Java - Classe <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);
[...]
}
}
La question est, pourquoi dois-je fournir le paramètre Class<T> clazz
lors de l'exécution new ClassValidator<T>(clazz)
? Pourquoi ne pouvez-vous pas spécifier:
T
comme dansClassValidator<T>(T)
?validateMe.getClass()
comme dansClassValidator<T>(validateMe.getClass())
Je reçois des erreurs lorsque je tente de faire les deux options.
Modifier: Je comprends pourquoi # 1 ne fonctionne pas. Mais je ne comprends pas pourquoi # 2 ne fonctionne pas. Je reçois actuellement cette erreur aveC# 2:
cannot find symbol
symbol : constructor ClassValidator(java.lang.Class<capture#279 of ? extends java.lang.Object>)
location: class org.hibernate.validator.ClassValidator<T>
Remarque: méthode API Hibernate est (here)
Tristement ne fonctionne pas, voir ma réponse à la poste de @ Jherico. –
J'ai fait une mise à jour, ça devrait fonctionner. – Bozho
Merci, le '(classe)' était la clé! –