gpt4 book ai didi

java - 将子类传递给方法但将父类(super class)作为参数?

转载 作者:IT老高 更新时间:2023-10-28 21:22:07 25 4
gpt4 key购买 nike

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

在另一个类(class)我有一个 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
}
}
}

最佳答案

改为这样做:

public <T extends Vehicle> void exampleMethod(Class<T> type) 

关于java - 将子类传递给方法但将父类(super class)作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com