我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > 反射工具类
总共48086条微博

动态微博

查看: 1390|回复: 0

反射工具类

[复制链接]

279

主题

41

听众

689

金钱

版主

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-03-30 10:37:07 |只看该作者 |倒序浏览
  1. package com.fh.util;

  2. import java.lang.reflect.Field;

  3. /**
  4. * @author Administrator
  5. *        反射工具
  6. */
  7. public class ReflectHelper {
  8.         /**
  9.          * 获取obj对象fieldName的Field
  10.          * @param obj
  11.          * @param fieldName
  12.          * @return
  13.          */
  14.         public static Field getFieldByFieldName(Object obj, String fieldName) {
  15.                 for (Class<?> superClass = obj.getClass(); superClass != Object.class; superClass = superClass
  16.                                 .getSuperclass()) {
  17.                         try {
  18.                                 return superClass.getDeclaredField(fieldName);
  19.                         } catch (NoSuchFieldException e) {
  20.                         }
  21.                 }
  22.                 return null;
  23.         }

  24.         /**
  25.          * 获取obj对象fieldName的属性值
  26.          * @param obj
  27.          * @param fieldName
  28.          * @return
  29.          * @throws SecurityException
  30.          * @throws NoSuchFieldException
  31.          * @throws IllegalArgumentException
  32.          * @throws IllegalAccessException
  33.          */
  34.         public static Object getValueByFieldName(Object obj, String fieldName)
  35.                         throws SecurityException, NoSuchFieldException,
  36.                         IllegalArgumentException, IllegalAccessException {
  37.                 Field field = getFieldByFieldName(obj, fieldName);
  38.                 Object value = null;
  39.                 if(field!=null){
  40.                         if (field.isAccessible()) {
  41.                                 value = field.get(obj);
  42.                         } else {
  43.                                 field.setAccessible(true);
  44.                                 value = field.get(obj);
  45.                                 field.setAccessible(false);
  46.                         }
  47.                 }
  48.                 return value;
  49.         }

  50.         /**
  51.          * 设置obj对象fieldName的属性值
  52.          * @param obj
  53.          * @param fieldName
  54.          * @param value
  55.          * @throws SecurityException
  56.          * @throws NoSuchFieldException
  57.          * @throws IllegalArgumentException
  58.          * @throws IllegalAccessException
  59.          */
  60.         public static void setValueByFieldName(Object obj, String fieldName,
  61.                         Object value) throws SecurityException, NoSuchFieldException,
  62.                         IllegalArgumentException, IllegalAccessException {
  63.                 Field field = obj.getClass().getDeclaredField(fieldName);
  64.                 if (field.isAccessible()) {
  65.                         field.set(obj, value);
  66.                 } else {
  67.                         field.setAccessible(true);
  68.                         field.set(obj, value);
  69.                         field.setAccessible(false);
  70.                 }
  71.         }
  72. }
复制代码



科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表