ArrayLists上的方法

时间:2011-12-20 22:26:35

标签: java

我正在研究我对ArrayLists的了解,并有一个问题。

我有4个班级,一个人超类,员工子类,学生子类和员工的经理子类。

我不明白的是我如何在人m.setBonus上使用方法ArrayList。我知道我可以将对象拆分成单独的数组,但我不确定这是不是答案。

我目前在Manager m : manager部分收到错误,因为我没有为经理提供参考。

我目前在我的测试类中有这段代码

public static void main(String[] args){

ArrayList<Person> people = new ArrayList<Person>();

people.add(new Employee("Tom", 4000, 1990, 3, 10));
people.add(new Pupil("Dick", "Comp Sci"));
people.add(new Employee("Harry", 4000, 1990, 3, 10));
people.add(new Manager ("Dan", 5000, 1990, 10, 1));

for (Manager m : manager)
{
    m.setBonus(5000);
}

for (Person p : people){

    System.out.println(p.getDetails());
}

}

}

我很抱歉,如果这是一件非常简单的事情。我在网上找不到任何东西。

干杯

2 个答案:

答案 0 :(得分:4)

您永远不会声明名为manager的经理列表,因此它不知道如何处理它。

你需要做这样的事情:

for (Person p : people)
{
    if (p instanceof Manager) {
        ((Manager)p).setBonus(5000);
    }
}

这将检查p的类以确认它是否是子类管理器。

答案 1 :(得分:2)

管理器arrayList不存在,而是检查现有的Person循环。

public static void main(String[] args) {
    ArrayList<Person> people = new ArrayList<Person>();

    people.add(new Employee("Tom", 4000, 1990, 3, 10));
    people.add(new Pupil("Dick", "Comp Sci"));
    people.add(new Employee("Harry", 4000, 1990, 3, 10));
    people.add(new Manager ("Dan", 5000, 1990, 10, 1));

    // manager arrayList does not exist
    //for (Manager m : manager)
    //{
    //  m.setBonus(5000);
    //}


    for (Person p : people){
        //Do this instead
        if (p instanceof Manager) {
            ((Manager) p).setBonus(5000);
        }

        System.out.println(p.getDetails());
    }
}