可以说我有列表具有不同的对象
class Person {
String Age;
String Name;
}
Class Employee {
int Salary;
String Name;
}
我有这些类,其在列表中的各种实例。 我创建了2个独立的功能,接受List<Person>
和List<Employee>
并显示内容。 但我想创建一个通用函数,它接受任何对象的列表并执行显示部分。
请帮我
感谢 阳光
可以说我有列表具有不同的对象
class Person {
String Age;
String Name;
}
Class Employee {
int Salary;
String Name;
}
我有这些类,其在列表中的各种实例。 我创建了2个独立的功能,接受List<Person>
和List<Employee>
并显示内容。 但我想创建一个通用函数,它接受任何对象的列表并执行显示部分。
请帮我
感谢 阳光
最简单的解决方法是让Employee
继承Person
。这很自然,因为员工最有可能是是个人。他们甚至分享了一些属性,如Name
(你已经在你的代码中)和Age
。
class Person {
String Age;
String Name;
}
class Employee extends Person {
int Salary;
// String Name; not needed anymore, inherited from Person
}
然后,就足够了的人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!"); }
}
然后可以使用的Human
个列表来存储对象类型。迭代变得非常容易:
List<Human> humanList = new ArrayList<>();
// ... Populate the list with Persons and Employees
for(Human human : humanList) {
human.showMe();
}
我应该'已经让员工扩展人,所以你可以有一个通用的功能来显示。
另一种方式可以是具有相同显示功能但具有两种不同实现的Person和Employee的通用接口。
我没有测试过,但是这样的事情:
什么有员工public interface MyInterface{
public void display();
}
class Person implments MyInterface{
String Age;
String Name;
@Override
public void display(){
//Logic to print the data
}
}
Class Employee implments MyInterface{
int Salary;
String Name;
@Override
public void display(){
//Logic to print the data
}
}
public class MyTest{
public static void main(String[] args){
List<MyInterface> myList = new ArrayList<MyInterface>();
MyInterface p = new Person();
MyInterface e = new Person();
myList.add(p);
myList.add(e);
printMyList(myList);
}
private void printMyList( List<MyInterface> myList){
for(MyInterface my:myList){
my.display();
}
}
}
扩展人与使用人的一个列表? – Davz