利用反射打印對象所有屬性的工具類

package day01.util;

import java.lang.reflect.Field;

public class EntityUtil {

 /**
  * @throws IllegalAccessException
  * @throws IllegalArgumentException
  * @param一個Object對象
  * @return傳入參數對象的所有屬性名及值
  */
 public static String entityToString(Object obj) throws IllegalArgumentException, IllegalAccessException
 {
  Class c = obj.getClass();
  
  if (c == null)
   return null;
  else
  {
   StringBuilder sb = new StringBuilder();
   String str = getClassFields(obj, c, sb);
   return str;
  }
 }

 private static String getClassFields(Object obj, Class c, StringBuilder sb) throws IllegalArgumentException, IllegalAccessException
 {
  int i;
  String name;
  Object value;
  sb.append(c.getName()).append("[");
  Field[] fs = c.getDeclaredFields();
  for (i=0; i<fs.length; i++)
  { //start for
   fs[i].setAccessible(true);
   name = fs[i].getName();
   value = fs[i].get(obj);
   sb.append(name).append("=").append(value);
   if (i != fs.length-1)
    sb.append(",");
  } //end for
  
  c = c.getSuperclass();
  if (c != null && c != Object.class)
  {
   sb.append(" "); //父類屬性前加空格
   getClassFields(obj, c, sb);
  }
  sb.append("]");
  
  return sb.toString();
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章