Применение оператора instanceof в Java

Применение оператора instanceof в Java

Иногда тип объекта полезно выяснить во время выполнения. Например, в од­ном потоке исполнения объекты разных типов моrут формироваться, а в другом потоке исполнения — использоваться.

В таком случае удобно выяснить тип каждо­го объекта, получаемого в обрабатывающем потоке исполнения. Тип объекта во время выполнения не менее важно выяснить и в том случае, когда требуется приведение типов.

В Java неправильное приведение типов влечет за собой появление ошибки во время выполнения.

Большинство ошибок приведения типов может быть выявлено на стадии компиляции. Но приведение типов в пределах иерархии классов может стать причиной ошибок, которые обнаруживаются только во вре­мя выполнения.

Например, суперкласс А может порождать два подкласса: В и С. Следовательно, приведение объекта класса В или С к типу А вполне допустимо, но приведение объекта класса В к типу С ( и наоборот) — неверно. А поскольку объект типа А может ссылаться на объекты типа В и С, то как во время выполнения узнать, на какой именно тип делается ссылка перед тем, как выполнить приведение к типус? Это может быть объект типа А, В или С.

Если это объект типа В, то во время вы­полнения будет сгенерировано исключение. Для разрешения этого вопроса в Java предоставляется оператор времени выполнения instanceof, который имеет сле­дующую общую форму:

где ссылка_на_объект обозначает ссылку на экземпляр класса, а тип — конкрет­ный тип этого класса. Если ссылка_на_объект относится к указанному типу или может быть приведена к нему, то вычисление оператора instanceof дает в итоге логическое значение true, а иначе — логическое значение false.

Таким образом, оператор instanceof — это средство, с помощью которого программа может получить сведения об объекте во время выполнения. В следующем примере програм­мы демонстрируется применение оператора instanceоf. Больше программ сможете найти на форум программистов java, там сможете задавать любые вопросы.

Эта программа выводит следующий результат:

Большинство программ не нуждается в операторе instanceof, поскольку типы объектов обычно известны заранее.

Но этот оператор может пригодиться при разработке обобщенных процедур, оперирующих объектами из сложной ие­рархии классов.

Интересное видео по теме:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *