Этот быстрый урок из нашей серии « Изучение Java для Android » показывает, как условно проверить тип объекта с помощью ключевого слова instanceof
в Java.
Основные условия
Мы говорили о многих основных условных выражениях Java в руководстве « Изучаем Java для Android»: синтаксис Java . Например, Java предоставляет все типичные условные операторы, которые можно ожидать, включая те, которые проверяют равенство, неравенство, больше, меньше, и т. Д.
Вот некоторый код Java, который проверяет значение числовой переменной (называемой iVar) и предоставляет различные пути кода в зависимости от того, является ли значение iVar нулевым, отрицательным или положительным:
if (iVar == 0) { // переменная равна нулю } else if (iVar> 0) { // переменная является положительным числом } еще { // переменная - отрицательное число }
Использование instanceof в условных выражениях
Теперь давайте рассмотрим конкретную функцию Java, которую вы также можете использовать в условных выражениях. Поскольку Java является полностью объектно-ориентированным языком, вы также можете проверить, является ли объект определенного типа (экземпляр определенного класса), условно используя ключевое слово instanceof
. Ключевое слово instanceof
— это логический оператор, который используется как обычный математический логический условный оператор для генерации истинного или ложного результата.
Давайте посмотрим на быстрый пример. Предположим, у нас есть родительский класс с именем Fish, который имеет два производных подкласса: SaltwaterFish и FreshwaterFish. Мы могли бы использовать ключевое слово instanceof
чтобы проверить, является ли объект экземпляром определенного класса (или подкласса) по имени:
SaltwaterFish nemo = новый SaltwaterFish (); if (nemo instanceof Fish) { // у нас есть какая-то рыба // может быть Fish (родительский класс) или некоторый подкласс, например // SaltwaterFish или FreshwaterFish. if (nemo instanceof SaltwaterFish) { // Немо - морская рыба! } }
Использование instanceof в разработке Android
Итак, когда речь идет о разработке Android, когда полезна функция instanceof
? Ну, во-первых, классы Android SDK организованы в типичной объектно-ориентированной манере: иерархически. Например, такие классы, как Button, TextView и CheckBox, которые представляют разные типы элементов управления пользовательского интерфейса, все являются производными от одного родительского класса: View. Поэтому, если вы хотите создать метод, который принимает параметр View, но имеет различное поведение в зависимости от конкретного типа элемента управления, вы можете использовать механизм instanceof
, чтобы проверить входящий параметр и точно определить, какой тип элемента управления представлением был передан в ,
Например, следующий метод принимает параметр View, позволяющий передать любой тип View, но специально выделяет элементы управления TextView для специальной обработки:
void checkforTextView (View v) { if (v instanceof TextView) { // Это элемент управления TextView } еще { // Это не элемент управления TextView } }
В этом примере мы могли бы продолжить, сделав вызов метода, который действителен только для объекта TextView, но не для универсального объекта View. В этом случае мы, скорее всего, приведем параметр View к TextView до выполнения такого вызова. Однако, если мы хотим сделать вызов, который доступен во всех объектах View, но ведет себя по-разному в объектах TextView, нет необходимости проверять это. Java будет обрабатывать вызов соответствующей версии метода, специфичной для TextView. Это одна из замечательных особенностей объектно-ориентированного программирования: вызывается наиболее подходящая версия данного метода.
Вывод
В этом коротком уроке вы узнали, как использовать ключевое слово instanceof
Java для проверки типа объекта во время выполнения и предоставления условных кодовых путей на основе результата. Это удобная функция Java, на которую часто полагаются разработчики Android, поскольку Android SDK организован иерархически.
Об авторах
Разработчики мобильных приложений Лорен Дарси и Шейн Кондер являются соавторами нескольких книг по разработке Android: углубленная книга по программированию под названием « Разработка беспроводных приложений для Android» и « Разработка Android-приложений Sams TeachYourself за 24 часа» . Когда они не пишут, они тратят свое время на разработку мобильного программного обеспечения в своей компании и оказание консультационных услуг. С ними можно связаться по электронной почте [email protected] , через их блог на androidbook.blogspot.com и в Twitter @androidwireless .