Array types may be identified by invoking
Class.isArray()
. To obtain aClass
use one of the methods described in Retrieving Class Objects section of this trail.The
example identifies the fields in the named class that are of array type and reports the component type for each of them.
ArrayFind
import java.lang.reflect.Field; import java.lang.reflect.Type; import static java.lang.System.out; public class ArrayFind { public static void main(String... args) { boolean found = false; try { Class<?> cls = Class.forName(args[0]); Field[] flds = cls.getDeclaredFields(); for (Field f : flds) { Class<?> c = f.getType(); if (c.isArray()) { found = true; out.format("%s%n" + " Field: %s%n" + " Type: %s%n" + " Component Type: %s%n", f, f.getName(), c, c.getComponentType()); } } if (!found) { out.format("No array fields%n"); } // production code should handle this exception more gracefully } catch (ClassNotFoundException x) { x.printStackTrace(); } } }The syntax for the returned value of
Class.get*Type()
is described inClass.getName()
. The number of '[
' characters at the beginning of the type name indicates the number of dimensions (i.e. depth of nesting) of the array.Samples of the output follows. User input is in italics. An array of primitive type
byte
:$ java ArrayFind java.nio.ByteBuffer final byte[] java.nio.ByteBuffer.hb Field: hb Type: class [B Component Type: byteAn array of reference type
StackTraceElement
:$ java ArrayFind java.lang.Throwable private java.lang.StackTraceElement[] java.lang.Throwable.stackTrace Field: stackTrace Type: class [Ljava.lang.StackTraceElement; Component Type: class java.lang.StackTraceElement
predefined
is a one-dimensional array of reference typejava.awt.Cursor
andcursorProperties
is a two-dimensional array of reference typeString
:$ java ArrayFind java.awt.Cursor protected static java.awt.Cursor[] java.awt.Cursor.predefined Field: predefined Type: class [Ljava.awt.Cursor; Component Type: class java.awt.Cursor static final java.lang.String[][] java.awt.Cursor.cursorProperties Field: cursorProperties Type: class [[Ljava.lang.String; Component Type: class [Ljava.lang.String;