Java 从父类中获取子类对象

标签 java

是否可以编写一个方法,允许我接收属于父类 Person 的对象列表。

Person类下,有几个子类,其中包括Employee类。

我希望该方法返回一个单独的列表,其中仅包含原始列表中的 Employee 对象。

谢谢

最佳答案

你需要一步一步来:

  1. 迭代 List<Person检查所有这些
  2. 如果当前元素是 en Employee你需要将它转换为并保留它
  3. 返回保留的列表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。 Java-8 方式与 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
}

关于Java 从父类中获取子类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790338/

相关文章:

java - 从 EditorReference 获取源文件?

java - 比较两个列表并从一个列表中删除重复项

java - #break 语句不起作用

java - 是否有可用的 Google App Engine 源代码和 JavaDoc JAR bundle ?

java - 操作系统工作流程更换

java - 这是如何编写此 <class name> <object name > = new constructor name 的正确方法?

java - 使用 java 在 Rest Assured 中发送 API header

java - 访问实现接口(interface)的通用枚举的父方法

java 检查一行代码中输入的字符串

java - 我怎样才能用代码进行java对象分配跟踪