前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 反射机制--根据属性名获取属性值

java 反射机制--根据属性名获取属性值

作者头像
庞小明
发布2018-07-06 14:59:34
5.2K0
发布2018-07-06 14:59:34
举报
文章被收录于专栏:pangguomingpangguoming

1.考虑安全访问范围内的属性,没有权限访问到的属性不读取

[java] view plain copy

/** 
    * 根据属性名获取属性值 
    *  
    * @param fieldName 
    * @param object 
    * @return 
    */  
 private String getFieldValueByFieldName(String fieldName, Object object) {  
 try {  
           Field field = object.getClass().getField(fieldName);  
 //设置对象的访问权限,保证对private的属性的访问  
 
 return  (String)field.get(object);  
       } catch (Exception e) {  
 
 return null;  
       }   
   }  

2.不考虑从祖先类继承的属性,只获取当前类属性,包括四类访问权限,private,protect,default,public

[java] view plain copy

/** 
   * 根据属性名获取属性值 
   *  
   * @param fieldName 
   * @param object 
   * @return 
   */  
 private String getFieldValueByFieldName(String fieldName, Object object) {  
 try {  
          Field field = object.getClass().getDeclaredField(fieldName);  
 //设置对象的访问权限,保证对private的属性的访问  
          field.setAccessible(true);  
 return  (String)field.get(object);  
      } catch (Exception e) {  
 
 return null;  
      }   
  }  

 3.考虑父类继承过来的属性,包括四类访问权限,private,protect,default,public

[java] view plain copy

/** 
 * 根据属性名获取属性元素,包括各种安全范围和所有父类 
 *  
 * @param fieldName 
 * @param object 
 * @return 
 */  
private Field getFieldByClasss(String fieldName, Object object) {  
    Field field = null;  
    Class<?> clazz = object.getClass();  
 
 for (; clazz != Object.class; clazz = clazz.getSuperclass()) {  
 try {  
            field = clazz.getDeclaredField(fieldName);  
        } catch (Exception e) {  
 // 这里甚么都不能抛出去。  
 // 如果这里的异常打印或者往外抛,则就不会进入  
 
        }  
    }  
 return field;  
 
}  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档