Рубрики

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

Оператор instanceof и метод isInstance () используются для проверки класса объекта. Но главное отличие возникает, когда мы хотим динамически проверять класс объекта. В этом случае метод isInstance () будет работать. Мы не можем сделать это с помощью оператора instanceof .

Оператор instanceof и метод isInstance () возвращают логическое значение. Рассмотрим пример:

// Java-программа для демонстрации работы
// оператор instanceof

public class Test

{

    public static void main(String[] args)

    {

        Integer i = new Integer(5);

  

        // печатает true, так как я - экземпляр класса

        // Целое число

        System.out.println(i instanceof Integer);

    }

}

Выход:

true

Теперь, если мы хотим проверить класс объекта во время выполнения, мы должны использовать метод isInstance () .

// Java-программа для демонстрации работы isInstance ()
// метод

public class Test

{

    // Этот метод сообщает нам, является ли объект

    // экземпляр класса, имя которого передается как

    // строка 'c'.

    public static boolean fun(Object obj, String c)

                      throws ClassNotFoundException

    {

        return Class.forName(c).isInstance(obj);

    }

  

    // Код драйвера, который вызывает fun ()

    public static void main(String[] args)

                      throws ClassNotFoundException

    {

        Integer i = new Integer(5);

  

        // выводим true, поскольку я являюсь экземпляром класса

        // Целое число

        boolean b = fun(i, "java.lang.Integer");

  

        // выводим false, поскольку я не являюсь экземпляром класса

        // Строка

        boolean b1 = fun(i, "java.lang.String");

  

        / * вывести true, так как я тоже экземпляр класса

           Число как класс Integer расширяет число

           учебный класс*/

        boolean b2 = fun(i, "java.lang.Number");

  

        System.out.println(b);

        System.out.println(b1);

        System.out.println(b2);

    }

}

Выход:

true
false
true

ПРИМЕЧАНИЕ: оператор instanceof генерирует ошибку времени компиляции (несовместимые типы условных операндов), если мы проверяем объект с другими классами, для которых он не создается.

public class Test

{

    public static void main(String[] args)

    {

        Integer i = new Integer(5);

  

        // Ниже строки вызывает ошибку времени компиляции: -

        // Несовместимые условные типы операндов

        // Целое число и строка

        System.out.println(i instanceof String);

    }

}

Выход :

13: error: incompatible types: Integer cannot be converted to String
        System.out.println(i instanceof String);
                           ^

Статьи по Теме:
новый оператор против метода newInstance () в Java
Размышления в Java

Эта статья предоставлена Гауравом Миглани . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

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

0.00 (0%) 0 votes