getDimensions

配列の要素数を取得する。
多次元配列の場合、各次元の要素数が配列で返る。
Arrays#newInstance(Class, int[])で使用する。
作ったきっかけは何だったかな・・・

public static int[] getDimensions(Object array) {
    if (!array.getClass().isArray()) {
        return new int[0];
    }
    if (array.getClass().getComponentType().isArray()) {
        int[] subDimensions = getDimensions(Array.get(array, 0));
        int[] ret = new int[subDimensions.length + 1];
        System.arraycopy(subDimensions, 0, ret, 1, subDimensions.length);
        ret[0] = Array.getLength(array);
        return ret;
    } else {
        return new int[] {Array.getLength(array)};
    }
}