En tant que followup to this question, est-il possible d'écrire une seule méthode qui ajoute un Dog
à une pièce appropriée? (Dans cet exemple, il accepterait une pièce Animal
ou une pièce Dog
.) Ou suis-je forcé d'écrire deux méthodes distinctes comme ci-dessous? (Je ne peux même pas compter sur la surcharge à cause de l'effacement du type).Est-il possible d'écrire une seule méthode qui accepte un paramètre générique d'abstraction variable?
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());
}
}
Oh * c'est ce que super est pour :) –
Yep! Vous utilisez 'List' en tant que consommateur, car il accepte le nouveau chien, donc le célèbre acronyme PECS de Josh Bloch s'applique. –
C'est le danger de la programmation "learn-as-you-go". Je "lis" son livre, mais seulement les parties qui étaient pertinentes à l'époque. Je pense que cela aurait pu me sauver beaucoup de refactoring inutile. N'hésitez pas à proposer (ou à modifier) un meilleur titre de question. –