java - 具有不同对象的列表

标签 java

假设我有

class Person {
    String Age;
    String Name;
}

Class Employee  {
    int Salary;
    String Name;
}

我在列表中有这些类的各种实例。 我创建了 2 个单独的函数来接受 List<Person>List<Employee>并显示内容。 但我想创建一个通用函数,它接受任何对象的列表并执行显示部分。

请帮帮我

谢谢 晴天

最佳答案

最简单的解决方案是让Employee继承自 Person .这是很自然的,因为很可能一个 Employee 一个人。他们甚至共享一些属性,比如 Name (您的代码中已有)和 Age .

class Person {
    String Age;
    String Name;
}

class Employee  extends Person {
    int Salary;
    // String Name; not needed anymore, inherited from Person
}

然后,有一个人员列表就足够了 List<Person> ,您可以在其中存储两种对象类型。

如果您出于任何原因仍然需要将它们分开,您可以添加一个公共(public)父类或接口(interface)。理想情况下,将必要的方法(如显示)添加到接口(interface)中并让类实现它们:

interface Human {
   void showMe();
}

class Person implements Human {
    String Age;
    String Name;

    public void showMe() { System.out.println("I am a Person!");  }
}

class Employee implements Human {
    int Salary;
    String Name;

    public void showMe() { System.out.println("I am an Employee!");  }
}

然后您可以使用 Human 的列表s 来存储两种对象类型。迭代变得非常容易:

List<Human> humanList = new ArrayList<>();
// ... Populate the list with Persons and Employees

for(Human human : humanList) {
    human.showMe();
}

关于java - 具有不同对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787316/

相关文章:

java - 将一个 Android 应用程序导入到另一应用程序中

java - 为什么这个数据库同步例程失败?

java - 为什么 JSP 文件的文件名中带有感叹号?

java - 在 IntelliJ Idea 中包装方法调用

java - 远程日志记录未记录,在等待接受新客户端后卡住

java - 我如何使用lambda方法summaryStatistics()来查找LocalTime值的统计信息?

java - 暂停 TimerTask 直到下一次执行

Java - SaxParser/DocumentBuilder "failing"获取正确的标签主体

java - 如何在 JAVA 中定义 NotesXspDocument 对象

java - 使用java在同一程序中的升序和降序