有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ArrayList上的java方法

我正在学习我对{}的知识,我有一个问题

我有4个类,一个人超类,雇员子类,学生子类和雇员的经理子类

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

我目前在Manager m : manager部分上得到一个错误,因为我假设没有对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) 个答案

  1. # 1 楼答案

    你从来没有声明过一个名为manager的经理列表,所以它不知道该怎么处理它

    你需要这样做:

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

    这将检查p类以确认它是否是子类Manager

  2. # 2 楼答案

    manager 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());
        }
    }