我的功能有问题。 该代码工作很对我很好,什么时候布尔属性为true删除一个项目:从收藏<?删除项目?扩展MyObject> UnsupportedOperationException
private void doRemoveAusgefallenePlaene(Collection<CarPlan> pAllCarPlan) {
for (Iterator<CarPlan> lCarPlanIterator = pAllCarPlan.iterator(); lCarPlanIterator.hasNext();) {
CarPlan lCarPlan = lCarPlanIterator.next();
if (!lCarPlan.isAusfall()) {
lCarPlanIterator.remove();
}
}
}
我的希望是使用功能CarPlan
类型的对象,以及ShipPlan
(既实现了接口Plan
) 。
private void doRemoveAusgefallenePlaene(Collection<? extends Plan> pAllPlan) {
for (Iterator<? extends Plan> lIterator = pAllPlan.iterator(); lPlanIterator.hasNext();) {
Plan lPlan = lPlanIterator.next();
if (!lPlan.isAusfall()) {
lPlanIterator.remove();
}
}
}
现在我可以调用函数与CarPlan
类型的Collections
和ShipPlan
doRemoveAusgefallenePlaene(pAllCarPlan);
doRemoveAusgefallenePlaene(pAllShipPlan);
和代码编译没有问题。不幸的是,在执行时间UnsupportedOperationException异常是线
lPlanIterator.remove();
抛出我想我明白了什么问题通过声明Collection<? extends Plan>
。 知道任何人的问题?
- 更新 - 对于那些有兴趣谁在一个可能的解决方案:
final List<CarPlan> lAllCarPlan = new ArrayList<CarPlan>(pAllCarPlan);
doRemoveAusgefallenePlaene(lAllCarPlan);
与ShipPlan
和CarPlan
的伟大工程。
您是否尝试过使用“Collection”? –
2013-03-15 13:50:22
是的,但后来我无法传递ShipPlan或CarPlan类型的集合。我描述的函数是businesscase doSomethingWithShip和doSomethingWithCar的一部分。我没有接口变量,也不允许进行类型转换。 – 2013-03-15 13:55:21