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

作为这个问题的后续 ,是否有可能编写一个方法,将Dog添加到合适的房间? (在这个例子中,它可以接受Animal室或Dog室。)或者我是否被迫写下两种不同的方法如下? (因为类型擦除,我甚至不能依赖重载)。

 public class Rooms { interface Animal {} class Dog implements Animal {} class Room { void add(T t) {} } void addDogToAnimalRoom(Room room) { room.add(new Dog()); } void addDogToDogRoom(Room room) { room.add(new Dog()); } } 

你使用Room作为消费者,因为它接受了新的Dog ,所以Josh Bloch着名的PECS首字母缩略词适用。

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