簡體   English   中英

java泛型方法的返回類型應該與傳遞的傳遞參數相同

[英]java generics return type of method should be same pass parameter passed

我想從列表中返回類的對象(作為參數傳遞給方法)。 同樣,在返回時,我需要將對象轉換為作為參數傳遞的類。 我的問題是我嘗試按照以下給出的方法進行操作,但是它不正確,因為它給了我編譯器錯誤“ 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;
}

return classToFind.cast(current) 與其他解決方案不同,這是類型安全的,不需要SuppressWarnings 但是,很明顯,無論如何,第二個參數都必須更改為Class<T> classToFind

如果不認可您在做什么,這將起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM