私は抽象クラスVehicle
に2つの実装サブクラスRedVehicle
とYellowVehicle
を持っています。サブクラスをメソッドに渡しますが、スーパークラスをパラメータとして使用していますか?
私は、両方のサブクラスのインスタンスを含むList<Vehicle>
を持っています。 メソッドにクラス型を渡して、その型を使用して、List
で何かを実行したいオブジェクトのセットを決定したいと考えています。 Class
以来
は、私はしかし、exampleMethod
以来取り組んで呼び出し元のコードは、現在の車両の種類、ないRedVehicle
あるいはYellowVehicle
のサブクラスを期待して停止しVehicle
親クラスとしてパラメータを入れて、何かでそれをparameteriseする必要があり、一般的なです。
これを行うにはクリーンな方法が必要だと思いますが、その機能を実装する正しい方法は何でしょうか?
n.b.私は必ずしもClass
型を渡す必要はありませんが、より良い提案があれば、それらを試してみてうれしいです。
電話番号:
3210フィールド/メソッド:
//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
}
}
}
:
訪問者を使用します。戻り値の型の前にジェネリック型を持つための特別な名前はありますか?一般的なソースへのリンクは良いでしょうか?私は試してみて明日、それがうまくいくならば受け入れます。 – Peanut
は、oracleのジェネリックの紹介やangelika langerのjava genericsのFAQを見てください。 +1はmprivatの直接的な解決方法です。 – DaveFar
@DaveBall angelika langer suggesetionのおかげで、私はジェネリックをコンセプトとして認識していますが、それを使ったことはありませんでしたが、深く掘り下げたことはありませんでした。関心のある人のためのリンク:http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQhtmlの – Peanut