A Java instanceof array example

While working with “Java instanceof” tests recently, my curiosity was piqued and I thought I’d take a look at how the instanceof operator works when working with a Java array.

A Java ‘instanceof array’ example

To that end, I created the following Java instanceof array example class. To make my findings really stand out well, I ended up creating two different methods, instanceTester, and arrayTester, and call both of them with a simple Java String array:

/**
 * A Java ‘instanceof’ array example/test class.
 * @author alvin alexander, alvinalexander.com.
 */
public class JavaInstanceofArrayExample {

    public static void main(String[] args) {
        String[] array = {"a", "b", "c"};
        instanceTester(array);
        arrayTester(array);
    }
  
    /**
     * A method that tests to see if the given object is 
     * an instance of a String.
     */
    static void instanceTester(Object object) {
        // see if the object is a String instance
        if (object instanceof String)
            System.out.println("object is a String");
        else
            System.out.println("object is not a String");
    }

    /**
     * A method that test to see if the given object is 
     * an instance of a String array.
     */
    static void arrayTester(Object[] objectArray) {
        // see if the object is a String array instance
        if (objectArray instanceof String[])
            System.out.println("objectArray is a String array");
        else
            System.out.println("objectArray is not a String array");
    }

}

(Before going on, it might be fun/helpful to make a note of what you think the output from this instanceof example will look like.)

Example program output

If you’ve used the Java instanceof operator to test against arrays before, you may have known that the program output would look like this:

object is not a String
objectArray is a String array

As you can see from the code, this happens because this test returns false:

if (object instanceof String)

while this test returns true:

if (objectArray instanceof String[])

The crazy thing about this test is that, to the best of my knowledge, I’ve never tried passing an object array into a method that had a simple Object signature, as I did in this code when calling the instanceTester method. As I was working on this article, once I saw that I could do something like this, I decided that I better try both tests: one comparison of the String array against the instanceof String test, and a second comparison of the String array against the instanceof String[] test.

Related “Java instanceof” articles

Here are links to some of my other Java instanceof tutorials: