"Hej, Amigo! Du har redan träffat instanceof -operatören. Idag ska jag berätta hur och var den kan användas. instanceof är en mycket enkel och effektiv operatör."

"Det låter som en reklam!"

"Det är verkligen väldigt enkelt. Det används så här: «objekt»-instans av «klass» ."

Den kontrollerar om ett objekt är en instans av en viss klass. Det är lättare än att förklara det. Titta på det här exemplet:

Koda Beskrivning
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt kommer att vara sant . Objektet som refereras till av variabeln o är en instans av klassen Integer .
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt kommer att vara falskt . Objektet som refereras till av variabeln o är inte en instans av klassen Integer . Det är ett String- objekt.
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS kommer att vara sant . Objektet som refereras till av variabeln o är en instans av klassen FileInputStream .

"Ja, det är väldigt enkelt."

"Den här operatören står också för arv. Kolla upp det."

Koda Beskrivning
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
Här har vi tre klassdeklarationer: Djur, Katt och Tiger. Katt ärver djur. Och Tiger ärver Cat.
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  kommer att vara  sant .
isTiger  kommer att vara  sant .
isAnimal  kommer att vara  sant .
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  kommer att vara falsk .
isTiger  kommer att vara  falsk .
isAnimal  kommer att vara  sant .

Och även gränssnitt:

Koda Beskrivning
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
Skapa två klasser: Cat, TomCat och Moveable-gränssnittet
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  kommer att vara  sant .
isMoveable  kommer att vara  sant .
isTom  kommer att vara  sant .
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  kommer att vara  sant .
isMoveable  kommer att vara  falskt .
isTom  kommer att vara  falsk .

Operatorn instansof ser ut så här: en instans av B .

Med andra ord kommer instansen av operatorn att returnera sant om:

1) variabel a lagrar en referens till ett objekt av typ B

2)  variabel a lagrar en referens till ett objekt vars klass ärver  B

3)  variabel a lagrar en referens till ett objekt som implementerar gränssnitt  B

Annars kommer instansen av operatorn att returnera false .

"Förstår. Så varför är detta nödvändigt, farbror Rishi?"

"Ellie ska berätta om det i dag. Det här är en riktigt trevlig operatör. Du kommer att vara övertygad om det idag."