Введение в 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 работает, правила с интерпретацией кода. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -
- Ключевые слова Java
- Java аннотации
- Шпаргалка JavaScript
- Ключевые слова PHP