[英]Java generics - getting a method to return the same type as the first parameter
[英]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.