— Привет, Амиго! Ты уже раньше знакомился с оператором instanceof. Сегодня я расскажу тебе, как и где его можно использовать. instanceof – это очень простой и эффективный в использовании оператор.
— Звучит, как реклама!
— Он, и правда, очень простой. Он используется в виде: «объект» instanceof «класс».
Он проверяет, является ли объект объектом определенного класса. Все еще проще, чем я говорю. Смотри пример:
Код | Описание |
---|---|
|
isInt будет равно true. Объект, на который ссылается переменная o, является объектом класса Integer. |
|
isInt будет равно false. Объект, на который ссылается переменная o, не является объектом класса Integer, он является объектом класса String. |
|
isFIS будет равно true. Объект, на который ссылается переменная is, является объектом класса FileInputStream. |
— Да, очень просто.
— Этот оператор учитывает и наследование. Вот смотри.
Код | Описание |
---|---|
|
Тут мы видим три объявленных класса: животное, кот и тигр. Кот наследуется от Животного. А Тигр от Кота. |
|
isCat будет равно true. isTiger будет равно true. isAnimal будет равно true. |
|
isCat будет равно false. isTiger будет равно false. isAnimal будет равно true. |
И даже интерфейсы:
Код | Описание |
---|---|
|
Создадим два класса: Cat, TomCat и интерфейс Moveable |
|
isCat будет равно true. isMoveable будет равно true. isTom будет равно true. |
|
isCat будет равно true. isMoveable будет равно false. isTom будет равно false. |
Оператор instanceof имеет вид: a instanceof B.
Другими словами, оператор instanceof вернет значение true, если:
1) переменная а хранит ссылку на объект типа B
2) переменная a хранит ссылку на объект, класс которого унаследован от B
3) переменная а хранит ссылку на объект реализующий интерфейс B
Иначе оператор instanceof вернет значение false.
— Понятно. А зачем это нужно, дядя Риша?
— Об этом сегодня тебе расскажет Элли. Это очень хороший оператор. Сегодня ты в этом убедишься.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ