— Привіт, Аміго! Раніше ти вже познайомився з оператором instanceof. Сьогодні я розповім тобі, як і де його можна використати. instanceof – це дуже простий та ефективний у використанні оператор.

— Звучить як реклама!

— Він і справді дуже простий. Він використовується у такому вигляді: «об'єкт» instanceof «клас».

Він перевіряє, чи є об'єктом певного класу. Все ще простіше, ніж я говорю. Дивись приклад:

Код Опис
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt буде дорівнювати true. Об'єкт, на який посилається змінна o, є об'єктом класу Integer.
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt буде дорівнювати false. Об'єкт, який посилається змінна o, не є об'єктом класу Integer, він є об'єктом класу String.
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof
FileInputStream;
isFIS буде дорівнювати true. Об'єкт, на який посилається змінна is, є об'єктом класу FileInputStream.

— Так, дуже просто.

— Цей оператор враховує і спадкування. Ось дивись.

Код Опис
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
Тут бачимо три оголошених класи: тварина, кіт і тигр. Кіт успадковується від Тварини. А Тигр від Кота.
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat буде дорівнювати true.
isTiger буде дорівнювати true.
isAnimal буде дорівнювати true.
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat буде дорівнювати false.
isTiger буде дорівнювати false.
isAnimal буде дорівнювати true.

І навіть інтерфейси:

Код Опис
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 буде дорівнювати true.
isMoveable буде дорівнювати true.
isTom буде дорівнювати true.
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat буде дорівнювати true.
isMoveable буде дорівнювати false.
isTom буде дорівнювати false.

Оператор instanceof має вигляд: a instanceof B.

Іншими словами, оператор instanceof поверне значення true, якщо:

1) змінна а зберігає посилання на об'єкт типу B

2) змінна a зберігає посилання на об'єкт, клас якого успадкований від B

3) змінна а зберігає посилання на об'єкт, що реалізує інтерфейс B

Інакше оператор instanceof поверне значення false.

— Зрозуміло. А навіщо це потрібно?

— Про це сьогодні ти дізнаєшся далі. Це дуже добрий оператор. Сьогодні ти в цьому переконаєшся.