Supposons que l'un a une collection d' Cat
, et certaines références à des objets de types Animal
, Cat
, SiameseCat
, et Dog
. Demander à la collecte si elle contient de l'objet visé par l' Cat
ou SiameseCat
référence semble raisonnable. En demandant s'il contient l'objet visé par l' Animal
référence peut paraître louche, mais ça reste tout à fait raisonnable. L'objet en question pourrait, après tout, être un Cat
, et peut apparaître dans la collection.
De plus, même si l'objet se trouve être autre chose qu'un Cat
, il n'y a pas de problème en disant qu'il figure dans la collection--il vous suffit de répondre "non, ce n'est pas". Une "recherche de style" collection d'un certain type devrait être capable de véritablement accepter le renvoi de tout supertype et de déterminer si l'objet existe dans la collection. Si le passé-de l'objet de référence est d'un autre type, il n'y a aucun moyen de la collecte pourrait éventuellement contenir, de sorte que la requête est dans un certain sens, pas de sens (il sera toujours répondre "non"). Néanmoins, puisqu'il n'y a pas un moyen pour limiter les paramètres à être sous-types ou aux supertypes, il est plus pratique de tout simplement accepter tout type et de répondre "non" pour tous les objets dont le type n'est pas liée à celle de la collection.