Ответ 1

В основном, вы проверяете, является ли объект экземпляром определенного класса. Обычно вы используете его, когда у вас есть ссылка или параметр для объекта, который относится к суперклассу или типу интерфейса, и нужно знать, имеет ли фактический объект какой-либо другой тип (обычно более конкретный).

Пример:

public void doSomething(Number param) {
  if( param instanceof Double) {
    System.out.println("param is a Double");
  }
  else if( param instanceof Integer) {
    System.out.println("param is an Integer");
  }

  if( param instanceof Comparable) {
    //subclasses of Number like Double etc. implement Comparable
    //other subclasses might not -> you could pass Number instances that don't implement that interface
    System.out.println("param is comparable"); 
  }
}

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

Ответ 3

instanceof может использоваться для определения фактического типа объекта:

class A { }  
class C extends A { } 
class D extends A { } 

public static void testInstance(){
    A c = new C();
    A d = new D();
    Assert.assertTrue(c instanceof A && d instanceof A);
    Assert.assertTrue(c instanceof C && d instanceof D);
    Assert.assertFalse(c instanceof D);
    Assert.assertFalse(d instanceof C);
}

Ответ 4

instanceof - это ключевое слово, которое можно использовать для проверки, относится ли объект к указанному типу.

Пример:

public class MainClass {
    public static void main(String[] a) {

    String s = "Hello";
    int i = 0;
    String g;
    if (s instanceof java.lang.String) {
       // This is going to be printed
       System.out.println("s is a String");
    }
    if (i instanceof Integer) {
       // This is going to be printed as autoboxing will happen (int -> Integer)
       System.out.println("i is an Integer");
    }
    if (g instanceof java.lang.String) {
       // This case is not going to happen because g is not initialized and
       // therefore is null and instanceof returns false for null. 
       System.out.println("g is a String");
    } 
} 

Вот мой источник.