- Given the parent child class hierarchy in java.
- We would like to compare the instance of classes at run-time.
- We will use instanceof operator to compare instance of any given class.
- instanceof operator allows us to detect type of object at run-time
- The pseudo code to check type of object at run-time is as follows
- object instanceof type, checks whether object is instance of type.
- e.g. Integer integer = new Integer(10);
- integer instanceof Number will returns true (as Integer is sub-class of Number).
- We can use instanceof operator scenarios like:
- If an object is an instance of a class
- If an object is an instance of a subclass
- If an object an instance of a class that implements a particular interface.
1. Example: find type of object at runtime using instanceof operator in java.
- We are create custom objects to compare their instances.
- We will create couple of concrete class viz Son & Daughter.
- Son class extends Parent class (Parent class implicitly extends Object class)
- Son class implements Wrestler interface.
- Similarly, Daughter class extends Parent class & implement Model interface.
- We will determine the time of object at run time using instanceof operator.
- e.g. Parent parent = new Parent();
- Parent son = new Son();
- son instanceof Son -> true (son object is Son)
- son instanceof Parent -> true (Son class extends Parent class)
- son instanceof Object -> true (Son class extends Parent class & Parent class implicitly extends Object class)
- son instanceof Wrestler -> true (Son class implements Wrestler interface)
- son instanceof Model -> false (Son class does not implements Model interface)
2. Program: find type of object using instanceof operator (java/example)
package org.learn;
class Parent {
}
interface Wrestler {
}
interface Model {
}
class Son extends Parent implements Wrestler {
}
class Daughter extends Parent implements Model {
}
public class DemoInstanceOfOperator {
public static void main(String[] args) {
Parent parent = new Parent();
Parent son = new Son();
Parent daughter = new Daughter();
//Check instance of operator on parent
System.out.println("1. parent instanceof Parent: "+ (parent instanceof Parent));
System.out.println("2. parent instanceof Son: "+ (parent instanceof Son));
System.out.println("3. parent instanceof Daughter: " + (parent instanceof Daughter));
System.out.println("4. parent instanceof Wrestler: "+ (parent instanceof Wrestler));
System.out.println("5. parent instanceof Model: "+ (parent instanceof Model));
System.out.println();
//Apply instanceof operator on son
System.out.println("6. son instanceof Son: "+ (son instanceof Son));
System.out.println("7. son instanceof Parent: "+ (son instanceof Parent));
System.out.println("8. son instanceof Object: "+ (son instanceof Object));
System.out.println("9. son instanceof Wrestler: "+ (son instanceof Wrestler));
System.out.println("10. son instanceof Model: "+ (son instanceof Model));
System.out.println();
//Apply instanceof operator on daughter
System.out.println("11. daughter instanceof Parent: " + (daughter instanceof Parent));
System.out.println("12. daughter instanceof Object: " + (daughter instanceof Object));
System.out.println("13. daughter instanceof Wrestler: " + (daughter instanceof Wrestler));
System.out.println("14. daughter instanceof Model: " + (daughter instanceof Model));
}
}
3. Output: find type of object using instanceof operator (java/example)
1. parent instanceof Parent: true
2. parent instanceof Son: false
3. parent instanceof Daughter: false
4. parent instanceof Wrestler: false
5. parent instanceof Model: false
6. son instanceof Son: true
7. son instanceof Parent: true
8. son instanceof Object: true
9. son instanceof Wrestler: true
10. son instanceof Model: false
11. daughter instanceof Parent: true
12. daughter instanceof Object: true
13. daughter instanceof Wrestler: false
14. daughter instanceof Model: true