"Bună ziua, Amigo! Ați întâlnit deja operatorul instanceof . Astăzi am să vă spun cum și unde poate fi folosit. instanceof este un operator foarte simplu și eficient."

— Sună ca o reclamă!

„Este într-adevăr foarte simplu. Este folosit astfel: „obiect” instanță de „clasă” ”.

Verifică dacă un obiect este o instanță a unei anumite clase. Este mai ușor decât să explic. Uită-te la acest exemplu:

Cod Descriere
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt va fi adevărat . Obiectul la care face referire variabila o este o instanță a clasei Integer .
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt va fi false . Obiectul la care face referire variabila o nu este o instanță a clasei Integer . Este un obiect String .
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS va fi adevărat . Obiectul la care face referire variabila o este o instanță a clasei FileInputStream .

"Da, asta este foarte simplu."

„Acest operator ține cont și de moștenire. Verificați.”

Cod Descriere
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
Aici avem trei declarații de clasă: Animal, Pisică și Tigru. Pisica moștenește animalul. Și Tiger moștenește Cat.
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  va fi  adevărat .
isTiger  va fi  adevărat .
isAnimal  va fi  adevărat .
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  va fi fals .
isTiger  va fi  fals .
isAnimal  va fi  adevărat .

Și chiar și interfețe:

Cod Descriere
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
Creați două clase: Cat, TomCat și interfața Moveable
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  va fi  adevărat .
isMoveable  va fi  adevărat .
isTom  va fi  adevărat .
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  va fi  adevărat .
isMoveable  va fi  false .
isTom  va fi  fals .

Operatorul instanceof arată astfel: o instanță B .

Cu alte cuvinte, operatorul instanceof va returna true dacă:

1) variabila a stochează o referință la un obiect de tip B

2)  variabila a stochează o referință la un obiect a cărui clasă moștenește  B

3)  variabila a stochează o referință la un obiect care implementează interfața  B

În caz contrar, operatorul instanceof va returna false .

"Am înțeles. Deci de ce este necesar, unchiule Rishi?"

„Ellie o să-ți spună despre asta astăzi. Acesta este un operator cu adevărat drăguț. Vei fi convins de asta astăzi.”