En supposant que IUncle est une interface implémentée par Uncle. Assumer que je ne vais pas utiliser des classes concrètes dans la classe Enfant parce que je veux que Child soit utilisé avec n'importe quelle implémentation d'Iuncle. Comment puis-je changer l'implémentation de Child (ci-dessous) de la manière qui fonctionnera pour n'importe quelle implémentation d'Oncle.Ajout d'éléments à un attribut dont le type est une collection java générique
public class Child {
private List<IUncle> uncles;
public Child(List<IUncle> uncles){
this.uncles = uncles;
}
public void addUncle(IUncle uncle) {
this.uncles.add(uncle);
}
}
Dans la classe principale, j'utiliser cette classe comme ceci:
List<Uncle> uncles = new ArrayList<Uncle>();
Child oneChild = new Child(uncles);
oneChild.addUncle(new Uncle);
C'est ne fonctionne pas du tout !!!
S'il vous plaît, quelqu'un peut-il donner la bonne façon de gérer cette situation dans Java?
'Liste' et Liste 'sont incompatibles. Ils ne stockent pas la même chose. –
Andreas
Qu'est-ce que 'Oncle' et qu'est-ce que' IUncle'? – user1803551
IUncle est en fait une interface et oncle est une classe implémentant cette interface. Et oui, je sais que la liste et la liste sont incompatibles. La question est comment gérer tourner cette classe de la manière qui respecte le "O" du principe SOLID en n'utilisant pas la classe concrète dans une implémentation. –
mokolop