我想从列表中返回类的对象(作为参数传递给方法)。同时返回时我需要将对象强制转换为作为参数传递的类。我的问题是我试图按照下面给出的但是它不正确,因为它给了我编译器错误“classToFind无法解析为类型”
private <T extends myClass> T findObject(List<JAXBElement<? extends myClass>> list,
Class<? extends myClass> classToFind) {
for (JAXBElement<? extends myClass> current : list) {
if(current.getClass() == classToFind) {
return (classToFind) currentClass; // error "classToFind cannot be resolved to a type"
}
}
return null;
}
答案 0 :(得分:5)
说return classToFind.cast(current)
。与其他解决方案不同,这是类型安全的,不需要SuppressWarnings
。但是,显然,在任何情况下,第二个参数都必须更改为Class<T> classToFind
。
答案 1 :(得分:1)
如果不支持您正在做的事情,这将有效:
private JAXBElement<? extends myClass> findObject(List<JAXBElement<? extends myClass>> list, Class classToFind) {
for (JAXBElement<? extends myClass> current : list) {
if (current.getClass() == classToFind) {
return current;
}
}
return null;
}
// This returns the actual value encapsulated inthe JAXBElement
private myClass findObject2(List<JAXBElement<? extends myClass>> list, Class classToFind) {
for (JAXBElement<? extends myClass> current : list) {
if (current.getClass() == classToFind) {
return current.getValue();
}
}
return null;
}