特定のクラスのインスタンスであるオブジェクトを取得するこのメソッドがあります。
public class UtilitiesClass {
public static final Collection<Animal> get(Collection<Animal> animals, Class<? extends Animal> clazz) {
// returns the Animals which are an instanceof clazz in animals
}
...
}
メソッドを呼び出すには、次のようにします。
Collection<Animal> dogs = UtilitiesClass.get(animals, Dog.class);
それは良いことですが、次の 2 つの方法でメソッドを呼び出せるようにしたいと考えています。
Collection<Animal> dogs = UtilitiesClass.get(animals, Dog.class);
また
Collection<Dog> dogsTyped = UtilitiesClass.get(animals, Dog.class);
つまり、メソッドの結果を Dog コレクションまたは Animal コレクションに格納できるようにしたいということですDog.class
。Animal.class
私は次のようなことを考えていました:
public static final <T> Collection<T> get(Class<T extends Animal> clazz) {
// returns the Animals which are an instanceof clazz
}
しかし、うまくいきません。ヒントはありますか?
編集: 最後に、@Rohit Jain の回答を使用して、これは UtilitiesClass メソッドを呼び出すときの解決策です。
Collection<? extends Animal> dogsAnimals = UtilitiesClass.get(animals, Dog.class);
Collection<Dog> dogs = UtilitiesClass.get(animals, Dog.class);