} else if (value instanceof String[]) {
out.append(Arrays.toString((String[]) value));
} else if (value instanceof CharSequence[]) {
out.append(Arrays.toString((CharSequence[]) value));
} else if (value instanceof Parcelable[]) {
out.append(Arrays.toString((Parcelable[]) value));
Эти 3 if
с можно заменить одним
} else if (value != null && value.getClass().isArray())
out.append(Arrays.toString((Object[]) value));
. В остальном вы можете задать статический Map<Class, Function<Object, String>> convertors
и предварительно заполнить его как
convertors.put(int[].class, value -> Arrays.toString((int [])value));
...
* 1009.* и затем используйте
Function<Object, String> convertor = convertors.get(value.getClass());
if (convertor != null) {
out.append(convertor.apply(value));
} else ...
ДЛЯ СТАРЫХ АНДРОИДОВ, ГДЕ ЛАМБДА НЕ ДОСТУПНЫ
interface ToString { String convert(Object object); }
...
static Map<Class, ToString> convertors = new HashMap();
convertors.put(int[].class, new ToString() { public String convert(Object value) { return Arrays.toString((int [])value); }});
...
, а затем используйте
ToString convertor = convertors.get(value.getClass());
if (convertor != null) {
out.append(convertor.convert(value));
} else ...