具有不同对象的列表

Sun*_*eva 2 java

可以说我有

class Person {
    String Age;
    String Name;
}

Class Employee  {
    int Salary;
    String Name;
}
Run Code Online (Sandbox Code Playgroud)

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

请帮我

谢谢Sunny

And*_*ter 10

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

class Person {
    String Age;
    String Name;
}

class Employee  extends Person {
    int Salary;
    // String Name; not needed anymore, inherited from Person
}
Run Code Online (Sandbox Code Playgroud)

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

如果由于任何原因仍需要将它们分开,则可以添加公共父类或接口.理想情况下,将必要的方法(如显示)添加到界面中,让类实现它们:

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!");  }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Humans 列表来存储两种对象类型.迭代变得非常简单:

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

for(Human human : humanList) {
    human.showMe();
}
Run Code Online (Sandbox Code Playgroud)