我有一个抽象类'实体'和实现不同接口的对象(扩展'实体')。 我也有一个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