Статьи

Изучите Java для разработки под Android: проверка типа объекта с помощью Instanceof

Этот быстрый урок из нашей серии « Изучение Java для Android » показывает, как условно проверить тип объекта с помощью ключевого слова instanceof в Java.

Мы говорили о многих основных условных выражениях Java в руководстве « Изучаем Java для Android»: синтаксис Java . Например, Java предоставляет все типичные условные операторы, которые можно ожидать, включая те, которые проверяют равенство, неравенство, больше, меньше, и т. Д.

Вот некоторый код Java, который проверяет значение числовой переменной (называемой iVar) и предоставляет различные пути кода в зависимости от того, является ли значение iVar нулевым, отрицательным или положительным:

Теперь давайте рассмотрим конкретную функцию Java, которую вы также можете использовать в условных выражениях. Поскольку Java является полностью объектно-ориентированным языком, вы также можете проверить, является ли объект определенного типа (экземпляр определенного класса), условно используя ключевое слово instanceof . Ключевое слово instanceof — это логический оператор, который используется как обычный математический логический условный оператор для генерации истинного или ложного результата.

Давайте посмотрим на быстрый пример. Предположим, у нас есть родительский класс с именем Fish, который имеет два производных подкласса: SaltwaterFish и FreshwaterFish. Мы могли бы использовать ключевое слово instanceof чтобы проверить, является ли объект экземпляром определенного класса (или подкласса) по имени:

Итак, когда речь идет о разработке Android, когда полезна функция instanceof ? Ну, во-первых, классы Android SDK организованы в типичной объектно-ориентированной манере: иерархически. Например, такие классы, как Button, TextView и CheckBox, которые представляют разные типы элементов управления пользовательского интерфейса, все являются производными от одного родительского класса: View. Поэтому, если вы хотите создать метод, который принимает параметр View, но имеет различное поведение в зависимости от конкретного типа элемента управления, вы можете использовать механизм instanceof , чтобы проверить входящий параметр и точно определить, какой тип элемента управления представлением был передан в ,

Например, следующий метод принимает параметр View, позволяющий передать любой тип View, но специально выделяет элементы управления 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 .

Купить Android-разработку беспроводных приложений, 2-е издание Купить Sam's Teach Yourself для Android-разработки приложений в течение 24 часов Код Мамламбо в Код-Каньоне