我正在研究我对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());
}
}
}
我很抱歉,如果这是一件非常简单的事情。我在网上找不到任何东西。
干杯
答案 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());
}
}