package com.shentb.hmb.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflexUtils { /** * 反射根据属性名获取属性值 * * @param fieldName 属性名 * @param object 实体类对象 * @return */ public static Object getFieldValueByFieldName(String fieldName, Object object) { try { Field field = object.getClass().getDeclaredField(fieldName); //设置对象的访问权限,保证对private的属性的访问 field.setAccessible(true); return field.get(object); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 通过反射设置属性的值 * @param fieldName 属性名 * @param fieldValue 属性值 * @param object 实体类对象 * @param parameterTypes 设置属性值的类型 * @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方法; //将属性的首字符大写,方便构造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(); } } } |
|