是否可以编写一个接受不同抽象的泛型参数的方法?

2024-03-16

As a 这个问题的后续 https://stackoverflow.com/q/9890866/403455,是否可以编写一个添加Dog到合适的房间? (在此示例中,它将接受Animal房间或Dog房间。)或者我被迫编写如下两种不同的方法? (由于类型擦除,我什至不能依赖重载)。

public class Rooms {
   interface Animal {}
   class Dog implements Animal {}
   class Room<T> {
      void add(T t) {}
   }

   void addDogToAnimalRoom(Room<Animal> room) {
      room.add(new Dog());
   }

   void addDogToDogRoom(Room<Dog> room) {
      room.add(new Dog());
   }   
}

你正在使用Room作为消费者,因为它正在接受新的Dog,所以乔什·布洛赫(Josh Bloch)著名适用。

void addDogToDogRoom(Room<? super Dog> room) {
  room.add(new Dog());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以编写一个接受不同抽象的泛型参数的方法? 的相关文章

随机推荐