利用Java反射根據屬性名獲取物件值和型別程式碼
* 通過屬性名獲取物件值
* @param mp 要操作的物件 這裡以MoveProgress 為例子
* @param vill 要獲取值的欄位名
* @return
* @throws Exception
*
*/
public Object getObValue(MoveProgress mp,String vill) throws Exception{
//獲取所有屬性
Field[] field= mp.getClass().getDeclaredFields();
//初始化類
Object info= mp.getClass().newInstance();
String name=vill.toUpperCase();//把欄位名變為大寫
//得到get方法名
name="get"+name.charAt(0)+vill.substring(1);
//得到方法
Method method= mp.getClass().getMethod(name);
//實現方法
Object k= method.invoke(mp);//動態呼叫類的方法
return k;
}
/**
* 根據欄位名得到型別
* @param ca 要操作的類
* @param name 要獲型別的欄位名
* @return
* @throws Exception
*
*/
public String getObStyle(Class ca,String name) throws Exception{
Class c=null;
Field[] field= ca.getDeclaredFields();
Object info= ca.newInstance();
for (int i = 0; i < field.length; i++) {
if(field[i].getName().equals(name)){
//得到型別
c=field[i].getType();
break;
}
}
return c.getName();
}