Instance of java что это
Перейти к содержимому

Instance of java что это

  • автор:

Equality, Relational, and Conditional Operators

The equality and relational operators determine if one operand is greater than, less than, equal to, or not equal to another operand. The majority of these operators will probably look familiar to you as well. Keep in mind that you must use " == ", not " = ", when testing if two primitive values are equal.

The following program, ComparisonDemo , tests the comparison operators:

The Conditional Operators

The && and || operators perform Conditional-AND and Conditional-OR operations on two boolean expressions. These operators exhibit "short-circuiting" behavior, which means that the second operand is evaluated only if needed.

The following program, ConditionalDemo1 , tests these operators:

Another conditional operator is ?: , which can be thought of as shorthand for an if-then-else statement (discussed in the Control Flow Statements section of this lesson). This operator is also known as the ternary operator because it uses three operands. In the following example, this operator should be read as: "If someCondition is true , assign the value of value1 to result . Otherwise, assign the value of value2 to result ."

The following program, ConditionalDemo2 , tests the ?: operator:

Because someCondition is true, this program prints "1" to the screen. Use the ?: operator instead of an if-then-else statement if it makes your code more readable; for example, when the expressions are compact and without side-effects (such as assignments).

The Type Comparison Operator instanceof

The instanceof operator compares an object to a specified type. You can use it to test if an object is an instance of a class, an instance of a subclass, or an instance of a class that implements a particular interface.

The following program, InstanceofDemo , defines a parent class (named Parent ), a simple interface (named MyInterface ), and a child class (named Child ) that inherits from the parent and implements the interface.

When using the instanceof operator, keep in mind that null is not an instance of anything.

Instance of java что это

In this tutorial, you will learn about Java instanceof operator in detail with the help of examples.

The instanceof is a binary operator used to test if an object is of a given type. The result of the operation is either true or false. It’s also known as type comparison operator because it compares the instance with type.

Syntax :

In the left hand side of instanceof operator we use to write the object name and in the right hand side we use to write the class name. It returns true if the specified object is an instance of the specified class name, else it returns false.

Example 1:
Example 2:
Example 3:
Using instanceof for resolving Downcasting

When Subclass type refers to the object of Parent class, it is known as downcasting. If we perform it directly, compiler gives Compilation error. If you perform it by typecasting, ClassCastException is thrown at runtime. But if we use instanceof operator, downcasting is possible.

Java Instanceof Operator

The Shortcut

The instanceof operator in Java is used to determine if an object is an instance of a particular class or interface. It is commonly used to test the type of an object before casting it to a specific class or interface.

Here is an example of how to use the instanceof operator in Java:

In this example, we first create an Object object called obj . Then, we use the instanceof operator to test if obj is an instance of the String class. If it is, we cast obj to a String and use it as a String object. If obj is not an instance of String , the else block is executed.

It’s important to note that the instanceof operator only works with objects, not primitive data types like int or double . To test the type of a primitive data type, you can use the == operator or the typeof operator (which is not a part of Java, but is used in other programming languages like JavaScript).

Сопоставление с образцом в Java: InstanceOf (JEP 305)

Чтобы лучше понять эту новую функцию, давайте посмотрим, как работает оператор instanceof. Если вы уже знакомы с ним, не стесняйтесь переходить к следующему разделу.

Короче говоря, он проверяет, принадлежит ли данный объект заданному типу. В результате этой проверки он возвращает либо true, либо false.

Этот оператор возвращает true, если ваш объект имеет данный тип или его подтип. В противном случае возвращается false.

Соответствие шаблону для instanceof

Старый добрый способ

Рассмотрим следующий пример. Animal — это класс, который имеет два подкласса: Cat и Dog.

Мы получаем объект animal на входе. Если объект animal является экземпляром класса Cat, мы хотим, чтобы этот объект говопил «мяу». Если это объект Dog, нам нужно чтобы он лаял. Поскольку этих методов нет в классе Animal, но они есть его подклассах, нам необходимо:

  1. Во-первых, проверить, какой тип объекта animal у нас есть, используя instanceof.
  2. Создать новую переменную типа Cat или Dog.
  3. Привести объект animal к правильному типу.

Теперь мы можем использовать наш объект Cat или Dog. Варианты использования этого могут быть довольно разнообразными.

Код выполняет свою работу, но он излишне многословен. Нам обычно нужно сделать все шаги перечисленные выше. Преобразовние типа объекта не нужно, так как мы уже проверили, что у нас есть либо Cat или Dog.

К счастью, в Java 14 появилась новая функция под названием Сопоставление с образцом для instanceof, описанная в JEP 305. В настоящее время это превью функция, поэтому она может измениться в будущем выпуске.

Лучший способ

В Java 14 приведенный выше пример может быть упрощен.

Вот что изменилось:

  1. Не нужно объявлять переменную cat, она доступна для нас.
  2. Не нужно преобразование типа. Мы можем использовать cat, как если бы она была типа Cat.
  3. Область действия переменной cat находится только внутри блока if.

Это проще, лаконичнее, легче для чтения и менее подвержено ошибкам.

Область действия переменной

Как уже упоминалось, область действия переменной ограничена только блоком if:

Однако, вы можете использовать переменную внутри условия if, если у вас есть более сложные условия, такие как AND/OR.

После проверки instanceof, после &&, мы можем использовать переменную cat, уже имеющую тип Cat, а не Animal.

Поддержка IDEA

Хорошей новостью является то, что в IntelliJ IDEA появилась хорошая поддержка этой функции, представленная в версии 2020.1 (наряду с поддержкой других новых функций Java 14, таких как Records или Улучшенный Switch).

Попробуй сам!

Чтобы попробовать эту функцию самостоятельно, вам нужно установить JDK 14.

Функция превью

Сопоставление с образцом для instanceof функциональности доступно в Java 14. Однако в настоящее время только в качестве функции превью (Preview feature). Что это значит?

Превью возможности языка и VM — это новая функция платформы Java SE, которая полностью специфицирована, реализована, но в то же время определена как временная. Она включается в выпуск JDK для получения обратной связи с разработчиками на основе реального использования; это может привести к тому, что она станет постоянной в будущей платформе Java SE.

Перед следующим выпуском функции JDK будут проанализированы сильные и слабые стороны функции в реальном мире, чтобы решить, имеет ли функция долгосрочную роль в платформе Java SE и, если да, нуждается ли она в уточнении. Следовательно, функции могут быть предоставлены окончательный и постоянный статус (с уточнениями или без них), или пройти дополнительный период предварительного просмотра (с уточнениями или без них), либо они могут быть удалены.

Такие функции поставляются в JDK, но не включены по умолчанию. Вы должны явно разрешить им использовать их. Излишне говорить, что она предназначена не для производственного использования, а скорее для оценки и экспериментов, поскольку она может быть удалена или сильно изменена в будущем выпуске.

Настройка IntelliJ IDEA

В IntelliJ IDEA вы можете включить функции предварительного просмотра в меню File → Project Structure.

Ручная компиляция

В качестве альтернативы, если вы собираете вручную, вам нужно задать следующие параметры для javac:

Это для компиляции. Во время выполнения вы просто задаете параметр —enable-preview

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

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