# 识别阵列类型 > 原文: [https://docs.oracle.com/javase/tutorial/reflect/special/arrayComponents.html](https://docs.oracle.com/javase/tutorial/reflect/special/arrayComponents.html) 可以通过调用 [`Class.isArray()`](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#isArray--) 来识别数组类型。要获得 [`Class`](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html) ,请使用此跟踪的[检索类对象](../class/classNew.html)部分中描述的方法之一。 [``ArrayFind`` ](example/ArrayFind.java)示例标识指定类中具有数组类型的字段,并报告每个字段的组件类型。 ``` 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(); } } } ``` 在 [`Class.getName()`](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getName--) 中描述了`Class.get*Type()`的返回值的语法。类型名称开头的“`[`”字符数表示数组的维数(即嵌套深度)。 输出样例如下。用户输入以斜体显示。一个原始类型数组`byte`: ``` $java ArrayFind java.nio.ByteBuffer final byte[] java.nio.ByteBuffer.hb Field: hb Type: class [B Component Type: byte ``` 引用类型 [`StackTraceElement`](https://docs.oracle.com/javase/8/docs/api/java/lang/StackTraceElement.html) 的数组: ``` $ 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`是参考类型 [`java.awt.Cursor`](https://docs.oracle.com/javase/8/docs/api/java/awt/Cursor.html) 的一维数组,`cursorProperties`是参考类型 [`String`](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html) 的二维数组: ``` $ 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; ```