java - 二维数组的 Java 组件类型
问题描述
我有一个int[][] myArray
用整数填充的二维数组。
如果我这样做myArray.getClass().getComponentType()
,它会返回我[I
。
为什么呢?
编辑
我有另一个库来检查我的二维数组的组件类型。它只允许Integer.TYPE
, Character.TYPE
,Long.TYPE
等等。或者,这是否意味着通过此检查,它根本不允许我使用 2D 数组?
解决方案
的getComponentType()
方法java.lang.Class class
用于获取表示数组的组件类型的Class,如果该类表示一个。否则返回 null。
这getClass()
是Object类的方法。此方法返回此对象的运行时类。
对于一维数组,例如:int arr[] = new int[5]
,当我们尝试获取类时arr.getClass()
,输出是
类[我
再次对于相同的一维数组,当我们尝试时arr.getClass().getComponentType()
,输出是
整数
二维数组可以称为数组的数组。
对于二维数组,例如:int arr[][] = new int[5][5]
,当我们尝试获取类时arr.getClass()
,输出是
类[[我
解释:class [ => 代表数组 [ => 代表数组 I => 代表 Integer
因为float arr[][]
,它会是
类[[F
当我们尝试arr.getClass().getComponentType()
时,输出是
类[我
当我们再次尝试 getComponetType() 时Arr.getClass().getComponentType().getComponentType()
,我们得到的输出为
整数
从上面的结果可以清楚地看出,对于N维数组,我们必须反复Get Component Type,直到我们解开类Type