public static void dump(String prefix, Object value) { if (value == null) debug(prefix, "null"); else if (value instanceof Object[]) { Object[] array = (Object[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) dump(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof int[]) { int[] array = (int[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) debug(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof char[]) { char[] array = (char[]) value; debug(prefix, "[" + new String(array) + "]"); } else if (value instanceof long[]) { long[] array = (long[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) debug(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof boolean[]) { boolean[] array = (boolean[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) debug(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof byte[]) { byte[] array = (byte[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) debug(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof float[]) { float[] array = (float[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) debug(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof byte[]) { double[] array = (double[]) value; debug(prefix, array); for (int i = 0; i < array.length; i++) debug(prefix + "\t" + i + ": ", array[i]); } else if (value instanceof java.util.List) { java.util.List list = (java.util.List) value; debug(prefix, "list"); for (int i = 0; i < list.size(); i++) dump(prefix + "\t" + "list: " + i + ": ", list.get(i)); } else if (value instanceof Map) { java.util.Map map = (java.util.Map) value; debug(prefix, "map"); ArrayList keys = new ArrayList(map.keySet()); Collections.sort(keys); for (int i = 0; i < keys.size(); i++) { Object key = keys.get(i); dump(prefix + "\t" + "map: " + key + " -> ", map.get(key)); } } // else if (value instanceof String) // debug(prefix, value); else { debug(prefix, value.toString()); debug(prefix + "\t", value.getClass().getName()); } }