2つのサブクラスとVehicle
が実装された抽象クラスがあります。RedVehicle
YellowVehicle
別のクラスには、List<Vehicle>
両方のサブクラスのインスタンスが含まれています。メソッドにクラス型を渡し、その型を使用して、で何かを実行するオブジェクトのセットを決定できるようにしたいですList
。
は一般的であるためClass
、何かを使用してパラメーター化する必要がありますが、パラメーターを親クラスとして配置すると、またはのサブクラスではなく、Vehicleのタイプが必要になるVehicle
ため、呼び出し元のコードが機能しなくなります。exampleMethod
RedVehicle
YellowVehicle
これを行うためのクリーンな方法があるはずだと思うので、機能を実装する正しい方法は何でしょうか?
nb必ずしも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
}
}
}