Suponga que uno tiene una colección de Cat
, y algunas referencias a objetos de tipos Animal
, Cat
, SiameseCat
, y Dog
. Preguntar a la colección si contiene el objeto al que hace referencia la referencia Cat
o SiameseCat
parece razonable. Preguntar si contiene el objeto al que hace Animal
referencia la referencia puede parecer dudoso, pero sigue siendo perfectamente razonable. El objeto en cuestión podría, después de todo, ser un Cat
y podría aparecer en la colección.
Además, incluso si el objeto Cat
no es un objeto , no hay problema para decir si aparece en la colección, simplemente responda "no, no lo hace". Una colección de "tipo de búsqueda" de algún tipo debería poder aceptar de manera significativa la referencia de cualquier supertipo y determinar si el objeto existe dentro de la colección. Si la referencia de objeto pasada es de un tipo no relacionado, no hay forma de que la colección pueda contenerla, por lo que la consulta no es significativa en algún sentido (siempre responderá "no"). No obstante, dado que no hay forma de restringir los parámetros a subtipos o supertipos, lo más práctico es simplemente aceptar cualquier tipo y responder "no" a cualquier objeto cuyo tipo no esté relacionado con el de la colección.