"Здравей, Амиго! Вече се запознахте с оператора instanceof . Днес ще ви кажа How и къде може да се използва. instanceof е много прост и ефективен оператор."

„Това звучи като реклама!“

„Наистина е много просто. Използва се така: «обект» екземпляр на «клас»

Той проверява дали даден обект е екземпляр от определен клас. По-лесно е, отколкото да го обясниш. Вижте този пример:

Код Описание
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt ще бъде вярно . Обектът, към който се отнася променливата o, е екземпляр на класа Integer .
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt ще бъде невярно . Обектът, към който се отнася променливата o, не е екземпляр на класа Integer . Това е String обект.
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS ще бъде вярно . Обектът, към който се отнася променливата o, е екземпляр на класа FileInputStream .

— Да, това е много просто.

„Този ​​оператор отчита и наследяването. Вижте го.“

Код Описание
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
Тук имаме три декларации за клас: Animal, Cat и Tiger. Котката наследява Животното. И Тигър наследява Котка.
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  ще бъде  вярно .
isTiger  ще бъде  вярно .
isAnimal  ще бъде  вярно .
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  ще бъде невярно .
isTiger  ще бъде  false .
isAnimal  ще бъде  вярно .

И дори интерфейси:

Код Описание
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
Създайте два класа: Cat, TomCat и интерфейса Moveable
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  ще бъде  вярно .
isMoveable  ще бъде  true .
isTom  ще бъде  вярно .
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat  ще бъде  вярно .
isMoveable  ще бъде  невярно .
isTom  ще бъде  false .

Операторът instanceof изглежда така : instanceof B .

С други думи, операторът instanceof ще върне true , ако:

1) променлива a съхранява препратка към обект от тип B

2)  променлива a съхранява препратка към обект, чийто клас наследява  B

3)  променлива a съхранява препратка към обект, който имплементира интерфейс  B

В противен случай операторът instanceof ще върне false .

„Разбрах. Тогава защо е необходимо това, чичо Риши?“

„Ели ще ви разкаже за това днес. Това е наистина добър оператор. Ще се убедите в това днес.“