"Hej, Amigo! Du har allerede mødt operatørens instance . I dag vil jeg fortælle dig, hvordan og hvor den kan bruges. instanceof er en meget enkel og effektiv operatør."

"Det lyder som en annonce!"

"Det er virkelig meget enkelt. Det bruges sådan her: «objekt»-forekomst af «klasse» ."

Den kontrollerer, om et objekt er en instans af en bestemt klasse. Det er nemmere end at forklare det. Se på dette eksempel:

Kode Beskrivelse
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt vil være sandt . Objektet, der refereres til af variablen o, er en forekomst af Integer- klassen.
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt vil være falsk . Objektet, der refereres til af variablen o, er ikke en forekomst af Integer- klassen. Det er et String- objekt.
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS vil være sandt . Objektet, der refereres til af variablen o, er en forekomst af klassen FileInputStream .

"Ja, det er meget enkelt."

"Denne operatør står også for arv. Tjek det ud."

Kode Beskrivelse
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
Her har vi tre klasseerklæringer: Dyr, Kat og Tiger. Kat arver dyr. Og Tiger arver kat.
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  vil være  sandt .
isTiger  vil være  sandt .
isAnimal  vil være  sandt .
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  vil være falsk .
isTiger  vil være  falsk .
isAnimal  vil være  sandt .

Og endda grænseflader:

Kode Beskrivelse
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
Opret to klasser: Cat, TomCat og Moveable-grænsefladen
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  vil være  sandt .
isMoveable  vil være  sandt .
isTom  vil være  sandt .
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  vil være  sandt .
isMoveable  vil være  falsk .
isTom  vil være  falsk .

Instanceof-operatoren ser sådan ud: en instans af B .

Med andre ord vil instansen af ​​operatoren returnere sand , hvis:

1) variabel a gemmer en reference til et objekt af type B

2)  variabel a gemmer en reference til et objekt, hvis klasse arver  B

3)  variabel a gemmer en reference til et objekt, der implementerer grænseflade  B

Ellers vil instansen af ​​operatøren returnere false .

"Forstår det. Så hvorfor er det nødvendigt, onkel Rishi?"

"Ellie vil fortælle dig om det i dag. Det er en rigtig god operatør. Det vil du være overbevist om i dag."