InstanceOf в Java - Работа и правила instanceOf в Java с примером

Содержание:

Anonim

Введение в instanceOf в Java

instanceOf - это класс языка программирования Java, который при вызове возвращает логическое значение и используется для проверки связи между объектом и классом / интерфейсом. Благодаря способности сравнивать эти два, он также известен как «оператор сравнения типов». Просто instanceOf используется для проверки того, принадлежит ли объект какому-либо типу или нет, и возвращает логическое значение, которое имеет значение true или false. InstanceOf является одним из полезных операторов в Java, который помогает в получении полезной информации об объекте в среде выполнения.

Синтаксис:

Класс instanceOf используется для проверки того, принадлежит ли объект какому-либо классу или нет.

obj instanceOf object

Выше приведен стандартный синтаксис класса instanceOf. Здесь obj - это имя объекта, который должен был быть создан ранее (ссылка). instanceOf - это ключевое слово, а объект - это класс или интерфейс, с которым мы сопоставляем объект obj.

В различных случаях instanceOf может оказаться очень полезным, например, когда у нас есть коллекция объектов, и вы не уверены, к какому объекту он относится. Примером такого случая может быть простая форма со многими элементами управления.

Кроме того, если в случае использования instanceOf с переменной, имеющей значение NULL, он обязательно вернет false.

Как работает экземпляр?

Оператор instanceOf в java работает с простыми отношениями is-a. Проще говоря, отношение is - это объектно-ориентированная концепция, в которой мы сравниваем или, скажем, работаем над отношением между абстракциями, где класс A является подклассом класса B. Это отношение полностью основано на наследовании. Другими словами, это все равно, что сказать «Х имеет тип Y».

Теперь давайте разберемся с работой instanceOf вместе с соответствующим кодом.

Сначала мы создадим класс с именем Parent.

Код:

Class Parent(
)
Then let's add a simple main class.
public static void main(String args()) (
)

Затем мы создадим экземпляр нашего родительского класса.

Parent child = new Parent();

Наконец, мы будем использовать оператор instanceOf, чтобы проверить отношения между child и Parent. Который идет так: дочерний экземпляр Родителя

Теперь, как упоминалось ранее, синтаксис для instanceOf исходит из объекта, который должен проверяться, затем из ключевого слова instanceOf и затем из класса / интерфейса, с которым должен проверяться данный объект.

В любой точке, где мы сталкиваемся с ключевым словом «extends» или «Implements», в объявлении класса это явный признак использования отношения is-a.

Примеры instanceOf в Java

В следующем примере демонстрируется использование instanceOf в одной строке.

Class instanceof_java(
public static void main(String args()) (
instanceof_java s = new instanceof_java();
System.out.println(s instanceOf instanceof_java);
)
)

Интерпретация кода: Началось с создания простого класса instanceof_java. В классе instanceof_java у нас есть наш основной класс, а в нашем основном классе мы создали объект s. Этот объект s имеет тип instanceof_java. Затем для реализации работы instanceOf мы предоставили выходной оператор с объектом s. В последней строке мы передали s вместе с ключевым словом instanceof и родительским классом. После выполнения код вернет true, потому что объект s имеет тип instanceof.

Двигаясь дальше, если у нас есть объект нашего известного класса или интерфейса, но мы не присвоили какое-либо значение одному и тому же объекту, он обязательно вернет false, даже если он принадлежит к тому же классу.

Class instanceof_sample(
public static void main(String args()) (
instanceof_sample new = null;
System.out.println(new instanceOf instanceof_sample);
)
)

Здесь у нас есть такой же код, как и в предыдущем примере, но с нулевым значением объекта. При выполнении этот код вернет false. Как мы видим, объект new является экземпляром instanceof_sample, но new присваивается нулевое значение, которое возвращает значение false.

Правила для экземпляра оператора

На основании того, является ли объект реф не является нулевым, а является экземпляром указанного типа. Когда X - простой класс упомянутого объекта, а Y - разрешенный класс или массив типа интерфейса.

  • Когда X простой класс, тогда:
  • Если Y является типом класса, то X должен быть подклассом Y или X должен быть того же класса, что и Y.
  • Если Y является типом интерфейса, то класс X должен реализовывать интерфейс T.
  • Когда X является интерфейсом типа, тогда:
  • Если Y является типом класса, то Y должен быть объектом.
  • Y может совпадать с интерфейсом X или суперинтерфейсом X, если Y является типом интерфейса.
  • Если X является классом, который представляет массив типа SC (), который является массивом компонентов типа SC, то:
  • Если Y является типом класса, тогда Y должен быть объектом.
  • Если Y является типом интерфейса, то Y должен иметь тип интерфейса, реализованный массивами.

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

программа

class Subject ( )
class Topic extends Subject ( )
class instanceof_java
(
public static void main(String() args)
(
Subject history = new Subject ();
if (history instanceof Topic)
System.out.println("history is instance of Topic");
else
System.out.println("history is NOT instance of Topic");
)
)

Интерпретация кода: Для понимания оператора instanceOf в различных сценариях мы написали приведенный выше код. Мы создали простой класс Subject, а затем еще один класс Topic, который расширяет класс Subject, делая класс Topic дочерним, а класс Subject - родительским. Затем еще один класс с основным методом. В методе main мы создали новый экземпляр родительского класса Subject. В цикле IF ELSE мы проверяли состояние объекта экземпляра с помощью родительского класса Subject. Если условие выполнено, в случае сбоя условия будет возвращено «история является экземпляром темы» и «история не является экземпляром темы».

После выполнения приведенного выше кода на выходе будет «история НЕ является экземпляром темы», что означает, что условие, переданное в IF, не выполнено. Это произошло потому, что мы попытались проверить родительский объект объекта «history» с классом Topic. Мы знаем, что класс Topic расширяет класс Subject, то есть Topic является подклассом Subject. И когда мы попытались проверить тип истории с классом Topic, он возвращает false (НЕ). Это означает, что родительский объект не может быть экземпляром класса.

Выход:

Заключение - instanceOf в Java

Мы узнали о классе instanceOf в Java, который просто решает, принадлежит ли объект данному типу. Мы поняли, как отношения влияют на оператор instanceOf. InstanceOf, также известный как оператор сравнения, основан на наследовании.

Рекомендуемые статьи

Это было руководство к InstanceOf в Java. Здесь мы обсуждаем, как InstanceOf в Java работает, правила с интерпретацией кода. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Ключевые слова Java
  2. Java аннотации
  3. Шпаргалка JavaScript
  4. Ключевые слова PHP