根据我所读到的,我认为这不可能,但我想确定.
我有一个OpDTO类和其他几个* DTO扩展了OpDTO.
然后,我想要一个方法从这些子DTO的列表中提取某些元素,并将提取的元素返回到另一个列表中:
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 List getLastOp (List listDTOs) {
List last = new ArrayList();
//processing
return last;
}
但是后来我不能强制listDTOs中的元素成为OpDTO的子类,并且无法实例化T.
任何的想法?
编辑
我也发生了将类型作为参数传递,然后我可以实例化它.这样可以,还是某种不好的做法?
private List getLastOp (List listDTOs, Class extends OpDTO> clazz) {
List ult = new ArrayList();
//processing
OpDTO op = clazz.newInstance();
//processing
ult.add((T) op);
op = listDTOs.get(i);
return ult;
}