A given array of objects can be one-dimensional, two-dimensional, three-dimensional, or n-dimensional. How can you tell? In this tip, the function getDim(Object o) takes an object and finds out it's dimension. The length is calculated from an in-built static method Array.getLength(o).
There are instances when you need to represent an n-dimensional array to a linear array. That's when you actually need to find out the dimension and length of an array so as to derive at a generic formula for conversion. Conversion in a "SPARSE MATRIX" is a typical example.
Here's the code:
import java.lang.reflect.*;
public class Reflec{
public static int getDim(Object array) {
int dim = 0;
Class cls = array.getClass();
while (cls.isArray()) {
dim++;
cls = cls.getComponentType();
}
return dim;
}
public static void main(String[] args){
Object o = new int[1][2][3];
// Get length
int len = Array.getLength(o); //Will Output 1
// Get dimension
int dim = getDim(o); //Will Output 3
System.out.println("Len : " + len + ", Dim : " + dim);
}
}