我有一个抽象类Vehicle
,它有两个实现的子类RedVehicle
和YellowVehicle
.
另一个类中有一个List<Vehicle>
,其中包含两个子类的实例。
我想能够传入一个类类型并使用该类型来决定在List
中要对哪组对象进行某些操作。
由于Class
是通用的,所以我应该将其参数化为某些内容,但是将参数放置为父类Vehicle
会导致调用代码无法工作,因为exampleMethod
现在期望的是Vehicle类型,而不是RedVehicle
或YellowVehicle
的子类。
我感觉应该有一种简洁的方法来解决这个问题,那么实现此功能的正确方法是什么呢?
n.b. 我不一定要传递Class
类型,如果有更好的建议,我很乐意尝试。
调用代码:
service.exampleMethod(RedVehicle.class);
service.exampleMethod(YellowVehicle.class);
字段/方法:
//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
}
}
}