我需要转换表单的验证结果,这些结果由java.util.Set<javax.validation.ConstraintViolation<dox.web.dto.RegisterFormDTO>>
表示,其中dox.web.dto.RegisterFormDTO
是我需要验证的表单之一。为此,我创建了一些方法
public static void process(Set<ConstraintViolation<RegisterFormDTO>> validates) {
...
}
事实上,这会产生转换。但是,问题是,除了RegisterFormDTO
之外,我还有许多其他不同的形式,我想制作一个通用的方法来转换所有形式的验证结果,特别是因为在方法中处理形式本身并不是隐含的。表单本身不从任何其他类扩展,也就是说,只从Object扩展,这样做是合乎逻辑的:
public static void process(Set<ConstraintViolation<Object>> validates) {
...
}
但是,由于某种原因,它没有滚动,它返回一个错误:java: incompatible types: java.util.Set<javax.validation.ConstraintViolation<dox.web.dto.RegisterFormDTO>> cannot be converted to java.util.Set<javax.validation.ConstraintViolation<java.lang.Object>>
。我已经试过了,所以Set<ConstraintViolation<? extends Object>>
和Set<ConstraintViolation<? super Object>>
是一样的。这一切都没有进展。结果,我为每个表单创建了相同的方法,只是方法参数中的类型不同。有人能告诉我如何使该方法适用于所有形式吗?
解决方案
public static <T> void process(Set<ConstraintViolation<T>> validates) {
...
}