私は Hibernate バリデーターを使用しており、小さな util クラスを作成しようとしています:
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 メソッドは (ここ)