将子类传递给方法但是以超类作为参数?

Pea*_*nut 26 java oop

我有一个抽象类,Vehicle有2个实现的子类RedVehicleYellowVehicle.

在另一个类中,我有一个List<Vehicle>包含两个子类的实例.我希望能够传递一个类类型的方法,然后使用该类型来决定我想要在哪些对象中执行某些操作List.

因为它Class是通用的我应该用它来参数化,但是将参数作为父类来Vehicle阻止调用代码工作,因为exampleMethod现在期望一种类型的Vehicle,而不是RedVehicleor 的子类YellowVehicle.

我觉得应该有一个干净的方法来实现这个功能的正确方法是什么?

我不一定要传递这种Class类型,如果有更好的建议,我会很乐意尝试这些.

来电代码:

service.exampleMethod(RedVehicle.class);
service.exampleMethod(YellowVehicle.class);
Run Code Online (Sandbox Code Playgroud)

字段/方法:

//List of vehicles
//Vehicle has 2 subclasses, RedVehicle and YellowVehicle
private List<Vehicle> vehicles;

//Having <Vehicle> as the Class parameter stops the calling code working
public void exampleMethod(Class<Vehicle> type) 
{
    for(Vehicle v : vehicles)
    {
        if(v.getClass().equals(type))
        {
            //do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

mpr*_*vat 57

改为:

public <T extends Vehicle> void exampleMethod(Class<T> type) 
Run Code Online (Sandbox Code Playgroud)