是否可以编写一个接受不同抽象的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 super Dog> room) { room.add(new Dog()); }