機能に問題がありました。そのコードは私にとってはかなりうまく機能します.boolean属性がtrueの場合、アイテムを削除します:
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();
}
}
}
CollectionsTypeCarPlanとType を使用して関数を呼び出すことができますShipPlan
doRemoveAusgefallenePlaene(pAllCarPlan);
doRemoveAusgefallenePlaene(pAllShipPlan);
コードは問題なくコンパイルされます。残念ながら、実行時に UnsupportedOperationException がインラインでスローされます
lPlanIterator.remove();
を宣言することで、何か間違ったことを理解していると思いますCollection<? extends Plan>。誰でも問題を知っていますか?
-- 更新 -- 考えられる解決策の 1 つに興味がある人向け:
final List<CarPlan> lAllCarPlan = new ArrayList<CarPlan>(pAllCarPlan);
doRemoveAusgefallenePlaene(lAllCarPlan);
と でうまく機能しShipPlanますCarPlan。