我有一個抽象類'實體'和實現不同接口的對象(擴展'實體')。 我也有一個ArrayList包含所有這些不同的對象。多個列表或列表和getSublist()(Java)
現在,如果我需要訪問實現某個接口(使用它的方法)的所有實體,我用下面的方法(返回「實體」實現接口「IDirectFire」的過濾列表):
public ArrayList<IDirectFire> getDirectFireSublist() {//direct fire sublist
ArrayList<IDirectFire> sublist = new ArrayList();
entities.stream().filter((it) -> (it instanceof IDirectFire)).forEach((it) -> {
sublist.add((IDirectFire) it);
});
return sublist;
}
現在我的問題: 我應該進一步使用這種方法還是應該創建一個新的ArrayList,除了'實體'之外還存在,我需要每次'實體'更改時手動更新?
我需要更新'實體'很多,所以我不確定存儲多個子列表是否更有效,並在每次'實體'更改時更新它們,或者如果我應該繼續使用方法來過濾'實體',並且將方法應用於這些子列表。請記住,這些子列表也將用於其他方法的循環中。例如:
private void resetFirestatusIDF() {//reset firestatus (IDirectFire)
getDirectFireSublist().stream().forEach((it) -> {
it.dfHasFired(false);
});}
這是否可行? 在此先感謝!
一般來說,應儘量避免使用'instanceof',因爲它被認爲是「設計氣味」 – wakjah