Java Programming/Keywords/instanceof
From Wikibooks, open books for an open world
instanceof is a keyword.
It checks if an object reference is an instance of a type, and returns a boolean value;
The <object-reference> instanceof Object will return true for all non-null object references, since all Java objects are inherited from Object. instanceof will always return false if <object-reference> is null.
Syntax:
<object-reference> instanceof TypeName
For example:
|
class Fruit
{ //... } class Apple extends Fruit { //... } class Orange extends Fruit { //... } public class Test { public static void main(String[] args) { Collection<Object> coll = new ArrayList<Object>(); Apple app1 = new Apple(); Apple app2 = new Apple(); coll.add(app1); coll.add(app2); Orange or1 = new Orange(); Orange or2 = new Orange(); coll.add(or1); coll.add(or2); printColl(coll); } private static String printColl( Collection<?> coll ) { for (Object obj : coll) { if ( obj instanceof Object ) { System.out.print("It is a Java Object and"); } if ( obj instanceof Fruit ) { System.out.print("It is a Fruit and"); } if ( obj instanceof Apple ) { System.out.println("it is an Apple"); } if ( obj instanceof Orange ) { System.out.println("it is an Orange"); } } } } |
Run the program:
java Test
The output:
"It is a Java Object and It is a Fruit and it is an Apple""It is a Java Object and It is a Fruit and it is an Apple""It is a Java Object and It is a Fruit and it is an Orange""It is a Java Object and It is a Fruit and it is an Orange"
Note that the instanceof operator can also be applied to interfaces. For example, if the example above was enhanced with the interface
|
interface Edible
{ //... } |
and the the classes modified such that they implemented this interface
|
class Orange extends Fruit implements Edible
{ ... } |
we could ask if our object were edible.
|
if ( obj instanceof Edible )
{ System.out.println("it is edible"); } |
This page may need to be