The Java TM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search

Trail: The Reflection API
Lesson: Working with Arrays

## Identifying Arrays

> If you aren't certain that a particular object is an array, you can check it with the `Class.isArray` method. Let's take a look at an example.

> The sample program that follows prints the names of the arrays that are encapsulated in an object. The program performs these steps:

> 1. It retrieves the `Class` object that represents the target object.
> 2. It gets the `Field` objects for the `Class` object retrieved in step 1.
> 3. For each `Field` object, the program gets a corresponding `Class` object by invoking the `getType` method.
> 4. To verify that the `Class` object retrieved in the preceding step represents an array, the program invokes the `isArray` method.

> Here's the source code for the sample program:

> >     import java.lang.reflect.*;
> >     import java.awt.*;

> >     class SampleArray {

> >        public static void main(String[] args) {
> >           KeyPad target = new KeyPad();
> >           printArrayNames(target);
> >        }

> >        static void printArrayNames(Object target) {
> >           Class targetClass = target.getClass();
> >           Field[] publicFields = targetClass.getFields();
> >           for (int i = 0; i < publicFields.length; i++) {
> >              String fieldName = publicFields[i].getName();
> >              Class typeClass = publicFields[i].getType();
> >              String fieldType = typeClass.getName();
> >              if (typeClass.isArray()) {
> >                 System.out.println("Name: " + fieldName +
> >                    ", Type: " + fieldType);
> >              }
> >           }
> >        }
> >     }

> >     class KeyPad {

> >        public boolean alive;
> >        public Button power;
> >        public Button[] letters;
> >        public int[] codes;
> >        public TextField[] rows;
> >        public boolean[] states;
> >     }

> The output of the sample program follows. Note that the left bracket indicates that the object is an array. For a detailed description of the type descriptors that `getName` returns, see section 4.3.1 of The Java Virtual Machine Specification.

> >     Name: letters, Type: [Ljava.awt.Button;
> >     Name: codes, Type: [I
> >     Name: rows, Type: [Ljava.awt.TextField;
> >     Name: states, Type: [Z

| Start of Tutorial > Start of Trail > Start of Lesson | Search