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

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;  
 
}  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

ECMAScript 6 新特性总结

本文作者:IMWeb 张颖 原文出处:IMWeb社区 未经同意,禁止转载 前言 个人感觉ECMAScript 6总体上来说:添加了块级作用域,增加了一...

4226
来自专栏对角另一面

lodash源码分析之获取数据类型

所有的悲伤,总会留下一丝欢乐的线索,所有的遗憾,总会留下一处完美的角落,我在冰峰的深海,寻找希望的缺口,却在惊醒时,瞥见绝美的阳光! ——几米 本文为读...

2753
来自专栏C语言及其他语言

C语言网Online Judge系统支持语言和编译说明

Online Judge系统支持语言和编译情况: 语言编译器语言版本编译参数Cgcc 4.6.3C99gcc Main.c -o Main -Wall -lm ...

2888
来自专栏函数式编程语言及工具

FunDA(8)- Static Source:保证资源使用安全 - Resource Safety

   我们在前面用了许多章节来讨论如何把数据从后台数据库中搬到内存,然后进行逐行操作运算。我们选定的解决方案是把后台数据转换成内存中的数据流。无论在打开数据库表...

21210
来自专栏偏前端工程师的驿站

(cljs/run-at (JSVM. :browser) "简单类型可不简单啊~")

前言  每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像Bash那样内置只支持字符串的脚步明显就是用于文本处理...

1967
来自专栏彭湖湾的编程世界

【Java】利用注解和反射实现一个"低配版"的依赖注入

在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇文章将讲述如何用Java的注解和反射实...

1414
来自专栏ml

CF---(452)A. Eevee

A. Eevee time limit per test 1 second memory limit per test 256 megabytes in...

43211
来自专栏LIN_ZONE

java反射机制的简单使用

通过上面的代码可以获得 运行时类的对象,然后下面使用运行时类的对象来构造一个反射工具类,通过下面这个类 可以利用反射机制实例化该类的对象,设置对象的属性并调用对...

822
来自专栏Golang语言社区

在Go语言中使用JSON

Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interfac...

3419
来自专栏分布式系统和大数据处理

ES6中的Generator函数

之前在React项目中,遇到异步请求,都是通过redux-thunk来处理,但使用这种方式,action就变得不那么纯净了。当前新的趋势是使用redux-sag...

1303

扫码关注云+社区