@SuppressWarnings("unchecked") private static <T> List<T> asList(Object array) { if (array == null) { return null; } if (!isArray(array)) { throw new IllegalArgumentException("The object should be an array"); } int length = getLength(array); List<T> list = new ArrayList<T>(length); for (int i = 0; i < length; i++) { list.add((T) Array.get(array, i)); } return list; }
private boolean isObjectArray(Object o) { return isArray(o) && !isArrayTypePrimitive(o); }
private static boolean areEqualArrays(Object o1, Object o2) { if (!isArray(o1) || !isArray(o2)) { return false; } if (o1 == o2) { return true; } int size = Array.getLength(o1); if (Array.getLength(o2) != size) { return false; } for (int i = 0; i < size; i++) { Object e1 = Array.get(o1, i); Object e2 = Array.get(o2, i); if (!areEqual(e1, e2)) { return false; } } return true; }
private String formatPrimitiveArray(Object o) { if (!isArray(o)) { return null; } if (!isArrayTypePrimitive(o)) { throw notAnArrayOfPrimitives(o); } int size = getLength(o); if (size == 0) { return "[]"; } StringBuilder buffer = new StringBuilder(); buffer.append('['); buffer.append(Array.get(o, 0)); for (int i = 1; i < size; i++) { buffer.append(", "); buffer.append(Array.get(o, i)); } buffer.append("]"); return buffer.toString(); }
private void deepToString(Object[] array, StringBuilder buffer, Set<Object[]> alreadyFormatted) { if (array == null) { buffer.append(NULL); return; } alreadyFormatted.add(array); buffer.append('['); int size = array.length; for (int i = 0; i < size; i++) { if (i != 0) { buffer.append(", "); } Object element = array[i]; if (!isArray(element)) { buffer.append(element == null ? NULL : toStringOf(element)); continue; } if (!isObjectArray(element)) { buffer.append(formatPrimitiveArray(element)); continue; } if (alreadyFormatted.contains(element)) { buffer.append("[...]"); continue; } deepToString((Object[]) element, buffer, alreadyFormatted); } buffer.append(']'); alreadyFormatted.remove(array); }
String format(Object o) { if (!isArray(o)) { return null; } return isObjectArray(o) ? formatObjectArray(o) : formatPrimitiveArray(o); }
if (isArray(o)) { return Arrays.format(o);