【发布时间】:2013-02-07 00:00:35
【问题描述】:
我正在创建一个 Object 类型的数组。我有两个不同的类,Employee 和 Person,它们具有简单的属性,如姓名、薪水(Employee)名字、出生日期(Person)。我需要将一些 Employee 和 Person 对象添加到我的数组中并比较数组中的某些内容。例如,从数组中检索最年轻的人。
public class Driver {
public static void main(String[] args) {
Employee e1 = new Employee("Den", 2000);
Employee e2 = new Employee("Jon", 1004);
Person p1 = new Person("Pen", "Tel", "1993");
Person p2 = new Person("Jon", "Smith", "1933");
Object [] crr;
crr = new Object[4];
crr[0] = e1;
crr[1] = p1;
crr[2] = p2;
crr[3] = e2;
System.out.println();
new Driver().printObjectArray("array crr", crr);
}
public void printObjectArray(String arrayName, Object [] array){
for (int i = 0; i < array.length; i++){
System.out.println(arrayName + "["+ i +"]" + array[i].toString());
}
System.out.println("--------------------");
}
}
我将如何比较数组中的某些内容。就像打印最年轻的人一样,这意味着我必须查看数组并查看它是否是 Person 对象,然后在这些对象上获取 DateOfBirth 并打印最年长的人。
【问题讨论】:
-
Employee是否扩展Person?通常最好将数组保持为最具体的类型,而不是假设任何元素都属于某个特定的子类。 -
不,Employee 和 Person 是它们自己的类。
-
那你为什么要把它们混合成一个数组呢?如果它们没有一些共同的特定属性,那可能不是一个好主意——如果它们确实具有这些共同的属性,他们应该通过扩展一个封装这些方面的通用超类来表达这一点。