假设您有不同的雇员,但是每个雇员类别都有一个salary()方法。如何使用薪水()方法制作并放入ArrayList中的这些不同对象?

public void betaalSalarissen(){
    for(int counter = 0;werknemers.size()>counter;counter++){
        Class objectClass = werknemers.get(counter).getClass();
        **objectClass.salaris();** //this won't work, help please!

    }
}
public void neemInDienst(Object persoon){   //objects from different classes, different employees
    werknemers.add(persoon);
}

最佳答案

此处的快速解决方案是从werknemers.get(counter)``to your Employee`类(刚刚猜出的类名)转换结果

((Employee)werknemers.get(counter)).salaris();


但从长远来看,您应该将通用参数应用于collection变量和methods参数:

private Collection<Employee>  werknemers = new ArrayList<>();

public void neemInDienst(Employee persoon){   //objects from different classes, different employees
    werknemers.add(persoon);
}


那么您就可以像ChiefTwoPencils所建议的那样简单地遍历元素而无需强制转换。

09-16 22:11