機能に問題がありました。そのコードは私にとってはかなりうまく機能します.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();
}
}
}
Collections
TypeCarPlan
と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
。