使用反射检查Java中的数组类型和长度

可以使用java.lang.Class.getComponentType()方法检查数组类型。此方法返回表示数组的组件类型的类。可以使用java.lang.reflect.Array.getLength()以int形式获得数组长度。

演示此的程序如下所示-

示例

import java.lang.reflect.Array;
public class Demo {
   public static void main (String args[]) {
      int[] arr = {6, 1, 9, 3, 7};
      Class c = arr.getClass();
      if (c.isArray()) {
         Class arrayType = c.getComponentType();
         System.out.println("The array is of type: " + arrayType);
         System.out.println("The length of the array is: " + Array.getLength(arr));
         System.out.print("The array elements are: ");
         for(int i: arr) {
            System.out.print(i + " ");
         }
      }
   }
}

输出结果

The array is of type: int
The length of the array is: 5
The array elements are: 6 1 9 3 7

现在让我们了解上面的程序。

首先定义数组arr,然后使用该getClass()方法获取arr的运行时类。演示这的代码片段如下-

int[] arr = {6, 1, 9, 3, 7};
Class c = arr.getClass();

然后使用getComponentType()方法获得数组类型。数组的长度是使用Array.getLength()方法获得的。最后,显示数组。演示这的代码片段如下-

if (c.isArray()) {
   Class arrayType = c.getComponentType();
   System.out.println("The array is of type: " + arrayType);
   System.out.println("The length of the array is: " + Array.getLength(arr));
   System.out.print("The array elements are: ");
   for(int i: arr) {
      System.out.print(i + " ");
   }
}