【问题标题】:Creating a method with a Set collection argument that contains objects that are typed使用包含类型化对象的 Set 集合参数创建方法
【发布时间】:2022-10-23 13:54:59
【问题描述】:

我需要转换表单的验证结果,用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&lt;javax.validation.ConstraintViolation&lt;dox.web.dto.RegisterFormDTO&gt;&gt; cannot be converted to java.util.Set&lt;javax.validation.ConstraintViolation&lt;java.lang.Object&gt;&gt;。我已经尝试过,所以Set&lt;ConstraintViolation&lt;? extends Object&gt;&gt;,它是一样的,所以Set&lt;ConstraintViolation&lt;? super Object&gt;&gt;。这一切都不是滚动的。结果,我为每个表单创建了相同的方法,只是方法参数中的类型不同。 有人可以告诉我如何使该方法对所有形式都通用吗?

【问题讨论】:

    标签: java generics


    【解决方案1】:

    解决方案

    public static <T> void process(Set<ConstraintViolation<T>> validates) {
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2011-09-24
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多