作为followup to this question,是否可以编写一个方法,将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());
}
}
答案 0 :(得分:5)
您使用Room
作为消费者,因为它接受新的Dog
,因此Josh Bloch着名的PECS acronym适用。
void addDogToDogRoom(Room<? super Dog> room) {
room.add(new Dog());
}