Java 数组列表上的方法
我正在学习我的Java 数组列表上的方法,java,Java,我正在学习我的ArrayLists知识,我有一个问题 我有4个类,一个人超类,雇员子类,学生子类和雇员的经理子类 我不明白的是如何在peopleArrayList上使用方法m.setBonus。我知道我可以将对象拆分为单独的数组,但我不确定这是否是答案 我目前在Manager m:Manager部分中遇到一个错误,因为我假设没有对Manager的引用 我目前在测试类中有此代码 public static void main(String[] args){ ArrayList<Person
ArrayLists
知识,我有一个问题
我有4个类,一个人超类,雇员子类,学生子类和雇员的经理子类
我不明白的是如何在peopleArrayList
上使用方法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());
}
}
}
publicstaticvoidmain(字符串[]args){
ArrayList people=新建ArrayList();
添加(新员工(“Tom”,40001990,3,10));
添加(新学生(“迪克”、“综合科学”);
添加(新员工(“Harry”,4000,1990,3,10));
添加(新经理(“Dan”,50001990,10,1));
经理(m:经理)
{
m、 挫折(5000);
}
用于(人员p:人员){
System.out.println(p.getDetails());
}
}
}
如果这真的很简单,我很抱歉。我只是在网上找不到任何东西
干杯您从未声明一个名为
manager
的经理列表,因此它不知道如何处理它
您需要执行以下操作:
for (Person p : people)
{
if (p instanceof Manager) {
((Manager)p).setBonus(5000);
}
}
这将检查p类以确认它是否为子类Manager。您从未声明名为
Manager
的管理器列表,因此它不知道如何处理它
您需要执行以下操作:
for (Person p : people)
{
if (p instanceof Manager) {
((Manager)p).setBonus(5000);
}
}
这将检查p类以确认它是否为Manager子类。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());
}
}
publicstaticvoidmain(字符串[]args){
ArrayList people=新建ArrayList();
添加(新员工(“Tom”,40001990,3,10));
添加(新学生(“迪克”、“综合科学”);
添加(新员工(“Harry”,4000,1990,3,10));
添加(新经理(“Dan”,50001990,10,1));
//管理器arrayList不存在
//经理(m:经理)
//{
//m.setBonus(5000);
//}
用于(人员p:人员){
//改为这样做
if(管理器的p实例){
(经理)p.挫折(5000);
}
System.out.println(p.getDetails());
}
}
manager arrayList不存在,请在现有人员循环中进行检查
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());
}
}
publicstaticvoidmain(字符串[]args){
ArrayList people=新建ArrayList();
添加(新员工(“Tom”,40001990,3,10));
添加(新学生(“迪克”、“综合科学”);
添加(新员工(“Harry”,4000,1990,3,10));
添加(新经理(“Dan”,50001990,10,1));
//管理器arrayList不存在
//经理(m:经理)
//{
//m.setBonus(5000);
//}
用于(人员p:人员){
//改为这样做
if(管理器的p实例){
(经理)p.挫折(5000);
}
System.out.println(p.getDetails());
}
}
非常感谢,我会去读这本书的instanceof部分您可能需要将该引用投射到经理
实例-我怀疑学生
是否获得奖金。这是一个解决方案,可能是原始海报设置问题的唯一解决方案,但每当我看到大量使用instanceof时,我担心整体设计可能会被破坏,“也许有更好的方法来解决潜在的问题。”我完全同意。我已经使用Java大约7年了,我想不出有哪一个程序是在我脑海中使用的instanceof
。我很确定我大概一年前才知道这件事。非常感谢,我会去读这本书的“实例”部分:)您可能需要将该引用投射到经理
实例-我怀疑学生
是否获得奖金。这是一个解决方案,可能是原始海报设置问题的唯一解决方案,但每当我看到大量使用instanceof时,我担心整体设计可能会被破坏,“也许有更好的方法来解决潜在的问题。”我完全同意。我已经使用Java大约7年了,我想不出有哪一个程序是在我脑海中使用的instanceof
。我很确定我大概一年前才知道。