package com.shentb.hmb.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflexUtils { /** * 反射根據(jù)屬性名獲取屬性值 * * @param fieldName 屬性名 * @param object 實體類對象 * @return */ public static Object getFieldValueByFieldName(String fieldName, Object object) { try { Field field = object.getClass().getDeclaredField(fieldName); //設(shè)置對象的訪問權(quán)限,保證對private的屬性的訪問 field.setAccessible(true); return field.get(object); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 通過反射設(shè)置屬性的值 * @param fieldName 屬性名 * @param fieldValue 屬性值 * @param object 實體類對象 * @param parameterTypes 設(shè)置屬性值的類型 * @throws */ public static void setFieldValueByFieldName(String fieldName,Object fieldValue,Object object,Class<?>... parameterTypes) { try { Field[] fields = object.getClass().getDeclaredFields(); for(int i=0;i<fields.length;i++){ Field field = fields[i]; //字段名稱 String name = field.getName(); if(name.equals(fieldName)){ field.setAccessible(true); //field.set(object,fieldValue) 可代替下面的拼接set方法; //將屬性的首字符大寫,方便構(gòu)造get,set方法 String methname = name.substring(0,1).toUpperCase()+name.substring(1); Method m = object.getClass().getMethod("set" + methname,parameterTypes); m.invoke(object,fieldValue); } } }catch (Exception e){ e.printStackTrace(); } } } |
|