Usando el operador
instanceof
, puedes averiguar de qué clase proviene un objeto. Este operador tiene dos argumentos. A la izquierda hay una referencia al objeto y a la derecha está el nombre del tipo con el que se verifica la compatibilidad del objeto. Por ejemplo:
Parent р = new Child(); // проверяем переменную р типа Parent
//на совместимость с типом Child print(p instanceof Child);
El resultado será verdadero . Por tanto, el operador instanceof
no se basa en el tipo de referencia, sino en las propiedades del objeto al que se refiere. Pero este operador devuelve un valor verdadero no sólo para el tipo del que se derivó el objeto. Agreguemos una más a las clases ya declaradas:
// Объявляем новый класс и наследуем
// его от класса Child
class ChildOfChild extends Child {}
Ahora creemos una variable de un nuevo tipo:
Parent p = new ChildOfChild();
print(p instanceof Child);
La primera línea declara una variable de tipo Parent
, que se inicializa con una referencia a un objeto derivado de ChildOfChild
. En la segunda línea, la declaración instanceof
analiza la compatibilidad de la referencia de tipo Parent
con la clase Child
, y el objeto involucrado no se deriva ni de la primera ni de la segunda clase. Sin embargo, el operador devolverá verdadero porque la clase de la que se deriva este objeto hereda de Child
. Enlace a la fuente original: Operador instancia de
GO TO FULL VERSION