4

作为这个问题的后续,是否可以编写一个将 a 添加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());
   }   
}
4

1 回答 1

5

Room作为消费者使用,因为它接受新的Dog,因此适用 Josh Bloch 著名的PECS 首字母缩略词

void addDogToDogRoom(Room<? super Dog> room) {
  room.add(new Dog());
}
于 2012-03-29T16:21:00.130 回答