Bonjour,
Je veux rendre la validation de mes bean générique avec une interface et des méthode par défauts.
J'ai écrit le code ci-dessous.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public interface Validable<T> {
default Validator getValidator() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
return factory.getValidator();
}
public default Set<ConstraintViolation<Class<T>>> validateProperty(String property) {
return getValidator().validateProperty(T class, property);
}
public default Set<ConstraintViolation<Validable<T>>> validate() {
return getValidator().validate(this);
}
public default boolean isValid() {
return (validate().isEmpty());
}
} |
Le problème se pose dans la méthode "validateProperty(String property)", qui attend le type de l'objet à valider.
return getValidator().validateProperty(T class, property);
Je ne sais pas comment préciser mon type avec la générécité.
J'aurai voulu écrire T.class
Je ne sais pas si une syntaxe existe pour ça en java 8.
Si vous avez une idée, merci par avance.
Comme alternative je pense qu'on peut écrire une classe utilitaire fgeneric qui retourne cela, mais ça me parait dommage.
Cordialement
Partager