3
根據我讀過的內容,我認爲這不能完成,但我想確定。 我有一個類OpDTO
和其他幾個*DTO extends OpDTO
。 然後,我想有一個方法來提取這些孩子的DTO的名單只是某些元素,而在另一個列表返回提取的元素:泛型的集合「不能實例化類型ArrayList <?extends OpDTO>」
public List<? extends OpDTO> getLastOp (List<? extends OpDTO> listDTOs) {
List<? extends OpDTO> last = new ArrayList<? extends OpDTO>(); //compile error: Cannot instantiate the type ArrayList<? extends OpDTO>
//processing
return last;
}
我想ult
是同種元素的列表在listDTOs
元素,並且只使用OpDTO的方法,但它會產生一個編譯錯誤:
Cannot instantiate the type
ArrayList<? extends OpDTO>
我也試着做這樣的事情:
public <T> List<T> getLastOp (List<T> listDTOs) {
List<T> last = new ArrayList<T>();
//processing
return last;
}
但是,我不能強制listDTO中的元素成爲OpDTO的子類,並且不能實例化T. 任何想法?
編輯
它也發生在我傳遞類型作爲參數,那麼我可以實例化。那會好嗎,還是這是一種不好的做法?
private <T extends OpDTO> List<T> getLastOp (List<T> listDTOs, Class<? extends OpDTO> clazz) {
List<T> ult = new ArrayList<T>();
//processing
OpDTO op = clazz.newInstance();
//processing
ult.add((T) op);
op = listDTOs.get(i);
return ult;
}
**是什麼錯誤說**? – SLaks
無法實例化類型ArrayList <?擴展OpDTO> –
始終在問題中包含錯誤消息。 –