The class java.util.Objects contains the deepEquals(Object a, Object b) method that can be used to compare objects of any type (including arrays and nu
I came to this solution: wrap a primitive array into Object[] and remove the outer brackets from the result returned by the public Arrays.deepToString(Object[] a):
public static String deepToString(Object o) {
if (o == null || !o.getClass().isArray())
return Objects.toString(o);
else if (o instanceof Object[])
return Arrays.deepToString((Object[])o);
else {
String s = Arrays.deepToString(new Object[] { o });
return s.substring(1, s.length() - 1);
}
}
Not very efficient, because it could create two large strings instead of a single one. But with this trick, I can use the hidden
Arrays.deepToString(Object[] a, StringBuilder buf, Set<Object[]> dejaVu)
method that contains the primitive arrays parsing logic.