iterator = cv.itera-6ren">
gpt4 book ai didi

java - 如何在 Java 中转换泛型?

转载 作者:行者123 更新时间:2023-11-30 11:46:21 27 4
gpt4 key购买 nike

我有这个代码:

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);

我已经取出一些来保持干燥,这样我就可以将它用于其他类,即 HazardSubmission 是一个类,并且还会有其他类。下面的代码显示了我的尝试,显然是手动转换 <HazardSubmission>这里行不通,它需要像 o.getClass();

public static List<String[]> GetInvalidProperties(Set<ConstraintViolation<Object>> cv, Object o) {

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 });
}

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

有人能解释一下如何做到这一点吗?

最佳答案

我认为您可能正在寻找一种通用方法

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 });
}
}

如果所有 T 都扩展了给定的类或接口(interface),您甚至可以说

public static <T extends MyClassOrInterface> List<String[]> GetInvalidProperties(Set<ConstraintViolation<T>> cv){
//...
}

关于java - 如何在 Java 中转换泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com