java通過反射遍歷物件得到屬性\反射賦值
阿新 • • 發佈:2019-01-02
import lombok.Data; import java.lang.reflect.Field; import java.lang.reflect.Method; @Data public class MyFK { String name; String password; /** * 通過反射遍歷物件得到物件的值 * @param myFK * @throws Exception */ public void test(MyFK myFK)throws Exception{ Field[] field = myFK.getClass().getDeclaredFields(); for(int i=0;i<field.length;i++){ String fieldName = field[i].getName();//欄位名稱 String methname = fieldName.substring(0,1).toUpperCase()+fieldName.substring(1); //將屬性的首字元大寫,方便構造get,set方法 Method m = myFK.getClass().getMethod("get" + methname); String value = (String)m.invoke(myFK); System.out.println(value); } } }
/** * 通過反射遍歷給物件賦值 其中map的key需要跟反射類的屬性一致 * @param * @throws Exception */ public void test2(Map<String,String> map)throws Exception{ MyFK myFK = new MyFK(); Field[] field = myFK.getClass().getDeclaredFields(); Set<String> keysets = map.keySet(); for(int i=0;i<field.length;i++){ String fieldName = field[i].getName();//欄位名稱 if(keysets.contains(fieldName)){ String value = map.get(fieldName); String methname = fieldName.substring(0,1).toUpperCase()+fieldName.substring(1); //將屬性的首字元大寫,方便構造get,set方法 Method m = myFK.getClass().getMethod("set"+methname,String.class); m.invoke(myFK,value ); } } System.out.println(myFK.toString()); }