Рубрики
Без рубрики

экземпляр Java

экземпляр java, оператор экземпляра Java, ключевое слово экземпляра в java, массив экземпляра Java, экземпляр объекта пример java, экземпляр в использовании кода java

Автор оригинала: Pankaj Kumar.

ключевое слово instanceof java используется для проверки того, относится ли объект к какому-либо типу или нет. Синтаксис оператора Java instanceof: obj Экземпляр объекта – левая сторона-это экземпляр, а правая сторона-имя класса. Оператор Java instanceof возвращает логический результат.

экземпляр Java

В этом разделе давайте посмотрим, как можно использовать ключевое слово instanceof .

Допустим, у нас есть некоторые интерфейсы и класс, определенные, как показано ниже.

interface Vehicle { }
class Car { }
class Ferrari extends Car implements Vehicle {}

Если мы проверим ключевое слово instanceof с указанными выше объектами класса, мы увидим следующие результаты:

Ferrari ferrari = new Ferrari();

ferrari instanceof Vehicle // true - Ferrari implements Vehicle
ferrari instanceof Car     // true - Ferrari extends Car
ferrari instanceof Ferrari // true - Ferrari is Ferrari
ferrari instanceof Object  // true - Object is the parent type of all objects

Но если мы что-то изменим, то увидим другие результаты:

Car car = new Car();
car instanceof Ferrari // false - Car is super type of Ferrari, not other way around

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

оператор instanceof против метода isInstance()

В принципе, оба они делают одно и то же: проверяют, является ли объект экземпляром того же класса, что и другой.

Оператор instanceof работает во время компиляции, тогда как метод isInstance() работает во время выполнения. Например:

// This method tells us whether the object is an
// instance of class whose name is passed as a
// string 'c'.
public static boolean checkType(Object obj, String c) 
    throws ClassNotFoundException {
        return Class.forName(c).isInstance(obj);
}

Давайте применим вышеприведенный метод, чтобы продемонстрировать его использование:

String str = "Shubham";
 
checkType(str, "java.lang.String");  // true
checkType(str, "java.lang.Object"); // true

Экземпляр Java с массивом

Массив Java также является объектом, но оператор instanceof работает по-другому, когда он используется с массивом. Например;

new int[] {1} instanceof Object; // true

Но если мы попробуем что-то вроде приведенного ниже:

new String[]{"1"} instanceof String

Затем мы получаем ошибку времени компиляции в виде Несовместимых типов условных операндов String[] и String . Однако ниже использование оператора instanceof работает нормально.

new String[]{"1"} instanceof String[] // true

Пример экземпляра Java

Вот полный пример для экземпляра оператора java и isInstance метода.

package com.journaldev.instanceofoperator;

interface Vehicle {}
class Car {}
class Ferrari extends Car implements Vehicle {}

public class InstanceOfExample {

	public static void main(String[] args) throws ClassNotFoundException {

		Car car = new Car();
		Ferrari ferrari = new Ferrari();
		String str = "Pankaj";
		String[] strArray = { "1" };

		System.out.println(ferrari instanceof Vehicle); // true - Ferrari implements Vehicle
		System.out.println(ferrari instanceof Car); // true - Ferrari extends Car
		System.out.println(ferrari instanceof Ferrari); // true - Ferrari is Ferrari
		System.out.println(ferrari instanceof Object); // true - Object is the parent type of all objects
		System.out.println(null instanceof Object); // false - null is not an Object
		System.out.println(car instanceof Ferrari); // false - Car is supertype of Ferrari, not other way around

		System.out.println(new int[] { 1 } instanceof Object); // true
		System.out.println(strArray instanceof String[]); // true

		System.out.println("*****");

		System.out.println(checkType(str, "java.lang.String")); // true
		System.out.println(checkType(str, "java.lang.Object")); // true
		System.out.println(checkType(str, "com.journaldev.instanceofoperator.Vehicle")); // false

		System.out.println(checkType(strArray, "java.lang.Object")); // true
		System.out.println(checkType(strArray, "java.lang.String")); // false

	}

	public static boolean checkType(Object obj, String c) throws ClassNotFoundException {
		return Class.forName(c).isInstance(obj);
	}
}

Это все для примера оператора java.

Ссылка: Документация Oracle