使用Set集合参数创建方法,该方法包含类型化的对象



我需要转换表单的验证结果,这些结果由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) {
...
}

相关内容

最新更新