我需要测试一个Object是Matrix还是Array.
比如我有:
String[] array;
String[][] matrix;
Run Code Online (Sandbox Code Playgroud)
我正在使用:
private boolean isVector(Class<?> clazz) {
return clazz.isArray();
}
private boolean isMatrix(Class<?> clazz) {
return clazz.getSimpleName().endsWith("[][]");
}
Run Code Online (Sandbox Code Playgroud)
但我不想使用,clazz.getSimpleName()因为非常慢(根据JProfiler,我的执行时间的近10%),是否有另一种方法来测试Object是否是一个矩阵?
我不能使用instanceof,因为它可以是任何对象的矩阵.
如果clazz是一个Foo数组,则(a)clazz.isArray()将返回true,(b)clazz.getComponentType()将返回Foo.class.
因此,要查明是否至少有两个数组级别,您要问的问题是:"这个类是一个数组,它的组件类也是一个数组." 在Java中:
clazz.isArray() && clazz.getComponentType().isArray()
Run Code Online (Sandbox Code Playgroud)
要找出是否有两个(所以它不是N维数组,N> 2):
clazz.isArray() && clazz.getComponentType().isArray()
&& !clazz.getComponentType().getComponentType().isArray()
Run Code Online (Sandbox Code Playgroud)