Java - Reflect , 取得任意物件特定的欄位值
這次,我想要做一個萬用的取欄位值,取得每一個物件的PK欄位資料
今天我擺ClassA ,能得到ClassA的id,如果放ClassB能得到ClassB的id資料。
參考
In Java, how to get attribute given the string with its name?
https://stackoverflow.com/questions/2043471/in-java-how-to-get-attribute-given-the-string-with-its-name
我做了一個萬用取得ids列表,自動變成以逗點合併的字串。
public static String getIds(List<Object> list,String pkName) {
int i = 0;
StringBuilder ids = new StringBuilder();
try {
for(Object obj:list) {
Field f= obj.getClass().getDeclaredField(pkName);
f.setAccessible(true);
int id = (int)f.get(obj);
if(i==0) {
ids.append(id);
} else {
ids.append(","+id);
}
i++;
}
}catch(Exception ex){
ex.printStackTrace();
}
return ids.toString();
}
又完成一個懶人Library Method