java 反射输出对象的所有属性
接口调用中经常会打印一些参数的值,但是一个对象的属性太多,一个一个的打印,太麻烦了。
于是就产生了下面的代码。
public String outObjPropertyString(Object obj) { StringBuffer sb = new StringBuffer(); if(null != obj) { try
{ this.getPropertyString(obj, sb); } catch (Exception e) { logger.log(\"outObjPropertyString is error \" + e.getMessage()); e.printStackTrace(); } } return sb.toString(); } public String getPropertyString(Object entityName, StringBuffer sb) throws Exception { Class c =
entityName.getClass(); Field field [] = c.getDeclaredFields();
Object obj = null; String classname = \"\"; Object tempObj = null; sb.append(\"------ \" + \" begin ------\\n\"); for(Field f :
field){ sb.append(f.getName()); sb.append(\" : \"); obj = invokeMethod(entityName,f.getName(),f.getType(),null);
if(null != obj) { if(obj.getClass().isArray()) { for (int i=0;i<Array.getLength(obj);i++) { tempObj = Array.get(obj, i); if(tempObj.getClass().isPrimitive())
{ sb.append(tempObj.toString());
} else if(tempObj instanceof String)
{ sb.append(tempObj.toString()); } else if(tempObj instanceof Date) { sb.append(tempObj.toString());
} else if(tempObj instanceof Number) { sb.append(tempObj.toString()); } else { this.getPropertyString(tempObj ,
sb); } } } classname = obj.getClass().getName();
if(classname.indexOf(\"com.cignacmb.core.model.\") > -1) { this.getPropertyString(obj ,
sb); } } /*if (f.getType() == Address.class) { this.getPropertyString(obj , sb); }*/ sb.append(obj);
sb.append(\"\\n\"); } sb.append(\"------ \" + \" end ------\\n\"); return sb.toString(); } public Object invokeMethod(Object owner, String methodName, Class fieldType, Object[] args) throws
Exception{ Class ownerClass = owner.getClass(); methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
Method method = null; try { if(fieldType == boolean.class) { method = ownerClass.getMethod(\"is\" + methodName); } else { method = ownerClass.getMethod(\"get\" + methodName); } } catch (SecurityException e)
{ e.printStackTrace(); } catch (NoSuchMethodException e)
{ //e.printStackTrace(); return \" can't find 'get\" + methodName + \"' method\"; } return method.invoke(owner); }
因篇幅问题不能全部显示,请点此查看更多更全内容