Peut-être artificiel, le "monde réel" exemple de l'aide.
Au travail, nous avons des poubelles qui viennent en différentes saveurs. Toutes les cellules contiennent des ordures, mais certains bacs sont spécialisés et ne prennent pas tous les types de déchets. Nous avons donc Bin<CupRubbish>
et Bin<RecylcableRubbsih>
. Le type de système doit s'assurer que je ne peux pas mettre mon HalfEatenSandwichRubbish
dans l'un de ces types, mais il peut aller dans un général poubelle `Bin<Rubbish>
. Si je voulais parler d'un Bin
de Rubbish
qui peut être un spécialiste donc je ne peux pas mettre incompatibles ordures, alors que serait Bin<? extends Rubbish>
.
(Remarque: ? extends
ne signifie pas en lecture seule. Par exemple, je puis avec les bonnes précautions prenez un morceau d'ordures dans une poubelle de l'inconnu spécialité et, plus tard, de le mettre dans un endroit différent.)
Pas sûr de savoir comment beaucoup de qui aide. Pointeur de pointeur en présence de polymorphisme, ce n'est pas évident.