private int[] getDimensions (Object array) { int depth = 0; Class nextClass = array.getClass().getComponentType(); while (nextClass != null) { depth++; nextClass = nextClass.getComponentType(); } int[] dimensions = new int[depth]; dimensions[0] = Array.getLength(array); if (depth > 1) collectDimensions(array, 1, dimensions); return dimensions; }
private void collectDimensions (Object array, int dimension, int[] dimensions) { boolean elementsAreArrays = dimension < dimensions.length - 1; for (int i = 0, s = Array.getLength(array); i < s; i++) { Object element = Array.get(array, i); if (element == null) continue; dimensions[dimension] = Math.max(dimensions[dimension], Array.getLength(element)); if (elementsAreArrays) collectDimensions(element, dimension + 1, dimensions); } }
private void collectDimensions (Object array, int dimension, int[] dimensions) { boolean elementsAreArrays = dimension < dimensions.length - 1; for (int i = 0, s = Array.getLength(array); i < s; i++) { Object element = Array.get(array, i); if (element == null) continue; dimensions[dimension] = Math.max(dimensions[dimension], Array.getLength(element)); if (elementsAreArrays) collectDimensions(element, dimension + 1, dimensions); } }
private void collectDimensions (Object array, int dimension, int[] dimensions) { boolean elementsAreArrays = dimension < dimensions.length - 1; for (int i = 0, s = Array.getLength(array); i < s; i++) { Object element = Array.get(array, i); if (element == null) continue; dimensions[dimension] = Math.max(dimensions[dimension], Array.getLength(element)); if (elementsAreArrays) collectDimensions(element, dimension + 1, dimensions); } }
private int[] getDimensions (Object array) { int depth = 0; Class nextClass = array.getClass().getComponentType(); while (nextClass != null) { depth++; nextClass = nextClass.getComponentType(); } int[] dimensions = new int[depth]; dimensions[0] = Array.getLength(array); if (depth > 1) collectDimensions(array, 1, dimensions); return dimensions; }
private int[] getDimensions (Object array) { int depth = 0; Class nextClass = array.getClass().getComponentType(); while (nextClass != null) { depth++; nextClass = nextClass.getComponentType(); } int[] dimensions = new int[depth]; dimensions[0] = Array.getLength(array); if (depth > 1) collectDimensions(array, 1, dimensions); return dimensions; }