Java - Reflect - 取得任意物件特定的欄位值

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