4 回答

TA贡献1789条经验 获得超8个赞
过滤掉就可以了
ArrayList<Account> accounts; all accounts List<SpecialAccount> filteredAccounts= sccounts.stream().filter(SpecialAccount.class::isInstance).collect(Collectors.toList());

TA贡献2011条经验 获得超2个赞
您可以使用instanceof,例如:
for(int i=0; i<aLista.size(); i++){
if(aLista.get(i) instanceof specialAccounts)
//...
}

TA贡献1824条经验 获得超5个赞
我的建议是面向对象编程 :
向类添加一个抽象方法
Account
:public abstract String getType();
实现该方法如下
EspecialAccount
:
public String getType() { return "EspecialAccount"; }
然后,致电
searchSpecialAccounts()
:
public String searchSpecialAccounts() {
for(Account acc : aLista){
if(acc.getType().equals("EspecialAccount")) {
// acc is of searchType type, great !
}
}
}
如果要指定 的默认值,getType()可以在抽象类上实现它,然后仅为特殊帐户类重写它。

TA贡献1796条经验 获得超4个赞
检查 searchSpecialAccounts() 的返回类型;
package com;
import java.util.ArrayList;
import java.util.List;
public class ManageAccounts {
ArrayList<Account> aList = new ArrayList<>();
List<SpecialAccounts> specialAccountsList = new ArrayList<>();
public List<SpecialAccounts> searchSpecialAccounts(){
for(int i=0; i<aList.size(); i++){
//how can I search in the arrayList all of the specialAccounts?
if(aList.get(0) instanceof SpecialAccounts) {
specialAccountsList.add(specialAccountsList.get(i));
}
}
return specialAccountsList;
}
}
class SpecialAccounts extends Account {
}
class Account {
}
添加回答
举报