Java InstanceOf
Understanding instanceOf working in Java
packageA
├── ClientClassAInSamePackage.java
├── SubClassAInSamePackage.java
└── SuperClassA.java
SuperClassA reference = new SubClassAInSamePackage();
if(reference instanceof SuperClassA){
// some logic
}
instanceOf operator validation is done both at Compile time and Run Time.
At compile Time :
Type of reference (left side) is validated against the Class (Right Hand side) to see if the condition is even possible .
if(reference instanceof String) results in compile time error as in this case reference type SuperClassA is not related to String Type(any parent child relationship).
[addToAppearHere]
At Run Time :
At run time the Object referred by the reference(Left hand side ) is validated to the class (Right hand side).
Reference can assume any object at runTime , either object of the Type the reference is or subType of the type of reference