初始化自定义类型的数组

时间:2012-03-09 03:00:55

标签: java arrays inheritance initialization

所以我正在搞乱无意识和多态性。一切都很顺利,直到我到达测试人员,我必须做一个类型员工(我的超级班)的数组。目前尝试运行此程序给我这个错误。

线程“main”中的异常java.lang.NullPointerException

我假设这与我声明我有employeeArray = null;时有关。但是把它留下来我把每个员工都放到数组中会出错,它说必须启动员工数组,默认情况下通过包含employeeArray = null;来实现。我在java上的这本书并没有真正触及这些类型的数组,而且我一直无法在网上找到麻烦的答案。任何人都可以提供任何帮助将不胜感激。

我也试过这样的事情

Employee [] employeeArray = new Employee[3] ;

这并没有返回任何错误,但没有返回我正在寻找的东西。这更像我的需要,但我的超级和子类有问题吗?

public class EmployeeTest {

public static void main(String[] args){

Employee [] employeeArray = null;
SalariedEmployee employee1 = new SalariedEmployee("Esther", "Smith", "111-111-111", 6, 2011, 2400); 
CommissionedEmployee employee2 = new CommissionedEmployee("Nick", "McRae", "222-222-222", 1, 1998, 50000, 0.1);
SalPlusCommEmployee employee3 = new SalPlusCommEmployee("Dan", "Mills", "333-333-333", 3, 2011, 1000, 0.05, 500 );

employeeArray[0] = employee1;
employeeArray[1] = employee2;
employeeArray[2] = employee3;

System.out.println(employeeArray[0].getEmployeeDetails);

System.out.println(employee1.toString()); // call the method from the sub class SalariedEmployee
System.out.println(employee2.toString()); // call the method from the sub class CommissionedEmployee
System.out.println(employee3.toString()); // call the method from the sub class SalPlusCommEmployee
}

3 个答案:

答案 0 :(得分:9)

您需要使用

Employee [] employeeArray = new Employee[3];

以及在employeeArray[0].getEmployeeDetails()

末尾添加括号

但是在你的情况下,你不需要担心使用数组并给它一个大小,你可以改用ArrayList,如下所示:

ArrayList<Employee> employees = new ArrayList<Employee>();
employees.add(new SalariedEmployee(...));
employees.add(new CommissionnedEmployee(...));
...

对于在员工上调用toString(),您需要使用属性覆盖Employee类的toString()方法,以及您想要的输出,否则您将获得默认值{{1 toString()类,它输出类名和对象哈希码的十六进制表示。

你的Employee类应该有这个方法(类似的东西):

Object

答案 1 :(得分:0)

你的

Employee [] employeeArray = null;

可能会导致空指针,你应该识别数组。 添加这个

employeeArray = new Employee[3];

在那之后, 如果SalariedEmployee,CommissionedEmployee是Employee的子类,就没有问题了。

答案 2 :(得分:0)

此代码有效,请检查您的课程。

public static void main(String[] args) {

    Object[] objets = new Object[3];

    String s1 = new String("s1");

    String s2 = new String("s2");

    String s3 = new String("s3");

    objets[0] = s1;
    objets[1] = s2;
    objets[2] = s3;

    System.out.println(Arrays.asList(objets));

}