package dk.itu.oop.lecture6; import java.lang.reflect.*; import java.util.*; class ObjectBrowser{ private String s = "Hello"; public static void main(String args[]) { System.out.println(toString( new ObjectBrowser() ,3) ); } public static String toString(Object o, int depth){ return toString(o, indents, depth); } private static Class[] wrappersArray = {int.class, Integer.class, Character.class}; private static HashSet wrappers= new HashSet(Arrays.asList(wrappersArray)); private static String indents = " "; private static String toString(Object o, String indent, int depth){ if (depth<1) return "..."; StringBuffer b = new StringBuffer(); try{Class c = o.getClass(); String className = c.getName(); b.append(className+"{\n"); Field[] f = c.getDeclaredFields(); for (int i = 0; i < f.length; i++) { String fieldName = f[i].getName(); Class typeClass = f[i].getType(); String fieldType = typeClass.toString(); if (Modifier.isStatic(f[i].getModifiers() ) ) b.append(indent +"static " + fieldName); else{ f[i].setAccessible(true); Object value = f[i].get(o); String val; if (wrappers.contains(typeClass) ) val = value.toString(); else if (typeClass.isArray() ){ val ="["; int maxIndex = Math.min( Array.getLength(value), 15 ); for (int j = 0; j< maxIndex; j++){ val+=Array.get(value,j).toString(); if (j+1 < maxIndex) val+= ","; } val +="]"; }else val = toString(value, indents + indent, depth-1); b.append(indent + fieldName + ": " + fieldType + " = " + val ); } if (i+1