Quelle est la raison d'une telle affectation? Une fois que nous "upcast" le conteneur Apple dans un conteneur de fruits, nous ne sommes pas en mesure d'ajouter quelque chose dedans.Quelle est l'application pratique d'une affectation impliquant un caractère générique?
Je sais que nous pourrions faire quelque chose comme:
List<Apple> basket = new ArrayList<Apple>();
//Fill the basket with tons of juicy apples
List<? extends Fruit> fruitContainer = basket;
Et nous pourrions être en mesure d'utiliser l'interface Fruit d'utiliser les éléments détenus par fruitContainer
. Mais quelle peut être la raison pratique de faire quelque chose comme ceci, si nous ne pouvons rien ajouter plus tard?
List<? extends Fruit> flist = new ArrayList<Apple>();
La question est: pourquoi un programmeur devrait-il faire quelque chose comme ça? Pouvez-vous trouver un scénario réaliste? :) – acejazz
@acejazz: Ma première phrase couvre ceci: Je ne pense pas qu'il y ait de raison pratique de le faire (à moins que, comme je le dis plus tard, vous n'ayez besoin d'ajouter quoi que ce soit à la liste). –