拧巴人 发表于 2015-3-30 10:37

反射工具类

package com.fh.util;

import java.lang.reflect.Field;

/**
* @author Administrator
*        反射工具
*/
public class ReflectHelper {
        /**
       * 获取obj对象fieldName的Field
       * @param obj
       * @param fieldName
       * @return
       */
        public static Field getFieldByFieldName(Object obj, String fieldName) {
                for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass
                                .getSuperclass()) {
                        try {
                                return superClass.getDeclaredField(fieldName);
                        } catch (NoSuchFieldException e) {
                        }
                }
                return null;
        }

        /**
       * 获取obj对象fieldName的属性值
       * @param obj
       * @param fieldName
       * @return
       * @throws SecurityException
       * @throws NoSuchFieldException
       * @throws IllegalArgumentException
       * @throws IllegalAccessException
       */
        public static Object getValueByFieldName(Object obj, String fieldName)
                        throws SecurityException, NoSuchFieldException,
                        IllegalArgumentException, IllegalAccessException {
                Field field = getFieldByFieldName(obj, fieldName);
                Object value = null;
                if(field!=null){
                        if (field.isAccessible()) {
                                value = field.get(obj);
                        } else {
                                field.setAccessible(true);
                                value = field.get(obj);
                                field.setAccessible(false);
                        }
                }
                return value;
        }

        /**
       * 设置obj对象fieldName的属性值
       * @param obj
       * @param fieldName
       * @param value
       * @throws SecurityException
       * @throws NoSuchFieldException
       * @throws IllegalArgumentException
       * @throws IllegalAccessException
       */
        public static void setValueByFieldName(Object obj, String fieldName,
                        Object value) throws SecurityException, NoSuchFieldException,
                        IllegalArgumentException, IllegalAccessException {
                Field field = obj.getClass().getDeclaredField(fieldName);
                if (field.isAccessible()) {
                        field.set(obj, value);
                } else {
                        field.setAccessible(true);
                        field.set(obj, value);
                        field.setAccessible(false);
                }
        }
}


页: [1]
查看完整版本: 反射工具类