如何在Java中转换泛型?

如何在Java中转换泛型?,java,hibernate,Java,Hibernate,我有以下代码: FVDTO.setStatus("fail"); List<String[]> invalidFields = new ArrayList<String[]>(); Iterator<ConstraintViolation<HazardSubmission>> iterator = cv.iterator(); while(iterator.hasNext()) { ConstraintViolation<Hazard

我有以下代码:

FVDTO.setStatus("fail");
List<String[]> invalidFields = new ArrayList<String[]>();
Iterator<ConstraintViolation<HazardSubmission>> iterator = cv.iterator();
while(iterator.hasNext()) {
    ConstraintViolation<HazardSubmission> i = iterator.next();
    String property = i.getPropertyPath().toString();
    String message = i.getMessage();
    invalidFields.add(new String[] { property, message });
}
FVDTO.setInvalidFields(invalidFields);
return new JsonResolution(FVDTO);
}

第二个代码块失败,因为我真的不知道我在做什么,我想用常规对象类型传入param 1的cv,然后以某种方式将该类型作为第二个参数传入

有人能解释一下怎么做吗?

cv.iterator()
将返回一个
迭代器,您需要
迭代器。之所以这样做是因为cv被定义为
Set
。如果你想要一个通用的方法,你可以改变

Set<ConstraintViolation<Object>> cv
设置cv


Set我想您可能正在寻找一种通用方法

public static <T> List<String[]> GetInvalidProperties(Set<ConstraintViolation<T>> cv){
   Iterator<ConstraintViolation<T>> iterator = cv.iterator();
   while(iterator.hasNext()) {
      ConstraintViolation<T> i = iterator.next();
      String property = i.getPropertyPath().toString();
      String message = i.getMessage();
      invalidFields.add(new String[] { property, message });
   }
}
公共静态列表GetInvalidProperty(设置cv){
迭代器迭代器=cv.Iterator();
while(iterator.hasNext()){
ConstraintViolation i=iterator.next();
String property=i.getPropertyPath().toString();
String message=i.getMessage();
add(新字符串[]{property,message});
}
}
如果所有T扩展了给定的类或接口,您甚至可以说

public static <T extends MyClassOrInterface> List<String[]> GetInvalidProperties(Set<ConstraintViolation<T>> cv){
     //...
}
公共静态列表GetInvalidProperty(设置cv){
//...
}

我没有使用hibernate,但是使用泛型的全部意义在于,当您的方法只处理
危险提交时,为什么要在参数中使用
对象
public static <T> List<String[]> GetInvalidProperties(Set<ConstraintViolation<T>> cv){
   Iterator<ConstraintViolation<T>> iterator = cv.iterator();
   while(iterator.hasNext()) {
      ConstraintViolation<T> i = iterator.next();
      String property = i.getPropertyPath().toString();
      String message = i.getMessage();
      invalidFields.add(new String[] { property, message });
   }
}
public static <T extends MyClassOrInterface> List<String[]> GetInvalidProperties(Set<ConstraintViolation<T>> cv){
     //...
}