2

我想从列表中返回类的对象(作为参数传递给方法)。此外,在返回时,我需要将对象转换为作为参数传递的类。我的问题是我尝试按照下面给出的方法进行操作,但它不正确,因为它给了我编译器错误“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;
}
4

2 回答 2

5

return classToFind.cast(current)。与其他解决方案不同,这是类型安全的,不需要SuppressWarnings. Class<T> classToFind但是,显然,无论如何都必须将第二个参数更改为。

于 2013-09-23T16:51:00.967 回答
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;
}
于 2013-09-23T16:54:24.890 回答