是否可以编写一个方法,允许我接收属于父类Person
的对象列表。
在Person
类下,有几个子类,包括Employee
类。
我希望该方法返回一个单独的List,该List仅包含原始列表中的Employee
个对象。
谢谢
答案 0 :(得分:7)
您需要按步骤执行此操作:
List<Person
检查所有内容Employee
,则需要将其强制转换为Employee
1。使用foreach-loop
public static List<Employee> getEmployeeListFromPersonList(List<Person> list) {
List<Employee> res = new ArrayList<>();
for (Person p : list) { // 1.Iterate
if (p instanceof Employee) { // 2.Check type
res.add((Employee) p); // 3.Cast and keep it
}
}
return res;
}
2。使用Streams
public static List<Employee> getEmployeeListFromPersonList(List<Person> list) {
return list.stream() // 1.Iterate
.filter(Employee.class::isInstance) // 2.Check type
.map(Employee.class::cast) // 3.Cast
.collect(Collectors.toList()); // 3.Keep them
}
答案 1 :(得分:3)
你的意思是:
List<Employee> getEmployees(List<Person> personList){
List<Employee> result = new ArrayList<Employee>();
for(Person person : personList){
if(person instanceof Employee) result.add((Employee)person);
}
return result;
}