Java code lib 输出对象所有属性值
/** * Converts an object to a string representation that lists all fields; * @param obj an object * @return a string with the object's class name and all filed names and values */ public String toString(Object obj) { if(obj ==null) return "null"; if(visited.contains(obj)) return "..."; visited.add(obj); Class cl=obj.getClass(); //String if(cl==String.class) return (String) obj; //Array if(cl.isArray()){ String r=cl.getComponentType()+"[]{"; for(int i=0;i< Array.getLength(obj);i++){ if(i>0) r+=","; Object val=Array.get(obj,i); if(cl.getComponentType().isPrimitive()) r+=val; else r+=toString(val); } return r+"}"; } String r=cl.getName(); //inspect the fields of this class and all superclass do{ r+="["; Field[] fields=cl.getDeclaredFields(); AccessibleObject.setAccessible(fields,true); //get the names and values of all fields for(Field f:fields){ if(!Modifier.isStatic(f.getModifiers())) { if(!r.endsWith("["))r+=","; r+=f.getName()+"="; try { Class t=f.getType(); Object val=f.get(obj); if(t.isPrimitive()) r+=val; else r+=toString(val); } catch (Exception e){ e.printStackTrace(); } } } r+="]"; cl=cl.getSuperclass(); } while (cl!=null); return r; }
posted on 2018-01-23 15:27 Lv Jianwei 阅读(208) 评论(0) 编辑 收藏 举报