zoukankan      html  css  js  c++  java
  • java 反射机制--根据属性名获取属性值

    1.考虑安全访问范围内的属性,没有权限访问到的属性不读取
    [java] view plain copy
     
    1. /** 
    2.     * 根据属性名获取属性值 
    3.     *  
    4.     * @param fieldName 
    5.     * @param object 
    6.     * @return 
    7.     */  
    8.    private String getFieldValueByFieldName(String fieldName, Object object) {  
    9.        try {  
    10.            Field field = object.getClass().getField(fieldName);  
    11.            //设置对象的访问权限,保证对private的属性的访问  
    12.              
    13.            return  (String)field.get(object);  
    14.        } catch (Exception e) {  
    15.            
    16.            return null;  
    17.        }   
    18.    }  
    2.不考虑从祖先类继承的属性,只获取当前类属性,包括四类访问权限,private,protect,default,public
    [java] view plain copy
     
    1. /** 
    2.    * 根据属性名获取属性值 
    3.    *  
    4.    * @param fieldName 
    5.    * @param object 
    6.    * @return 
    7.    */  
    8.   private String getFieldValueByFieldName(String fieldName, Object object) {  
    9.       try {  
    10.           Field field = object.getClass().getDeclaredField(fieldName);  
    11.           //设置对象的访问权限,保证对private的属性的访问  
    12.           field.setAccessible(true);  
    13.           return  (String)field.get(object);  
    14.       } catch (Exception e) {  
    15.           
    16.           return null;  
    17.       }   
    18.   }  

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

    [java] view plain copy
     
      1. /** 
      2.  * 根据属性名获取属性元素,包括各种安全范围和所有父类 
      3.  *  
      4.  * @param fieldName 
      5.  * @param object 
      6.  * @return 
      7.  */  
      8. private Field getFieldByClasss(String fieldName, Object object) {  
      9.     Field field = null;  
      10.     Class<?> clazz = object.getClass();  
      11.   
      12.     for (; clazz != Object.class; clazz = clazz.getSuperclass()) {  
      13.         try {  
      14.             field = clazz.getDeclaredField(fieldName);  
      15.         } catch (Exception e) {  
      16.             // 这里甚么都不能抛出去。  
      17.             // 如果这里的异常打印或者往外抛,则就不会进入  
      18.               
      19.         }  
      20.     }  
      21.     return field;  
      22.   
      23. }  
  • 相关阅读:
    部署iis服务器与c#程序遇到的问题小结
    Installing node-oracledb on Microsoft Windows
    Navicat:cant create OCI environment.
    socket.io 中文手册 socket.io 中文文档
    现有的情绪
    Express 4.x Node.js的Web框架
    结构与类的对象在引用上的不同之处
    Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式
    ASP.NET MVC4中调用WEB API的四个方法
    安恒DASCTF 四月战 WP
  • 原文地址:https://www.cnblogs.com/weiguoaa/p/9051982.html
Copyright © 2011-2022 走看看