當有個方法是要接收Object 而這Object可能是model時可用"Field[] "
import java.lang.reflect.Field;
Ex:
public static void main(String[] args) throws Exception {
member_test mm = new member_test();
mm.setAddr("111號");
mm.setCid("H112222");
mm.setEmail("yyyy@yahoo.com.tw");
mm.setName("KKMAN");
Map aa = toStringData(mm);
// ouptu: aa就為 {email=yyyy@yahoo.com.tw, name=KKMAN, addr=111號, cid=H112222}
// 而沒使用到的model成原則就不會出現在aa裡
// 如果是傳List方式要另外判斷
}
public static Map toStringData(Object obj) throws IllegalArgumentException, IllegalAccessException{
Map map = new HashMap();
Field[] fields = obj.getClass().getDeclaredFields();
for (int j = 0; j < fields.length; j++) {
fields[j].setAccessible(true);// 设置这个变量不进行访问权限检查 在类里设置的变量可以为private
if (fields[j].get(obj) != null && (((fields[j].get(obj) instanceof String) && !"".equals(fields[j].get(obj)))
|| ((fields[j].get(obj) instanceof Integer)))) {
map.put(fields[j].getName(), fields[j].get(obj));
}
}
return map;
}
// instanceof :測試某一物件是否為另一類別 (class) 的子類別 (subclass) ,或是某介面 (interface) 的實作介面
// 參考網址: http://pydoing.blogspot.tw/2010/10/java-instanceof.html