estoy usando Hibernate validador y tratando de crear un poco de clase util:Pregunta de genéricos de Java - Clase <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 pregunta es, ¿por qué necesito para suministrar el parámetro Class<T> clazz
al ejecutar new ClassValidator<T>(clazz)
? ¿Por qué no se puede especificar:
T
como enClassValidator<T>(T)
?validateMe.getClass()
como enClassValidator<T>(validateMe.getClass())
recibo mensajes de error cuando trato de hacer las dos opciones.
Editar: Entiendo por qué # 1 no funciona. Pero no entiendo por qué el # 2 no funciona. Actualmente me sale este error con # 2:
cannot find symbol
symbol : constructor ClassValidator(java.lang.Class<capture#279 of ? extends java.lang.Object>)
location: class org.hibernate.validator.ClassValidator<T>
Nota: método de la API de Hibernate es (here)
Lamentablemente no funciona, ver mi respuesta a la publicación de @ Jherico. –
Hice una actualización, debería estar funcionando. – Bozho
Gracias, el '(Clase)' fue la clave! –