作为 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());
}
}
最佳答案
您正在使用 Room
作为消费者,因为它正在接受新的 Dog
,所以 Josh Bloch 著名的 PECS acronym适用。
void addDogToDogRoom(Room<? super Dog> room) {
room.add(new Dog());
}
关于java - 是否可以编写一个方法来接受不同抽象的通用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9929370/