java反射-BeanUtils.getFieldValue(object,property)

本文给出两个函数:

   BeanUtils.getFieldValue(object,propertyName);//取出object对象中的propertyName属性的值.propertyName只能是object所在类中定义的,而不是其基类定义的

           BeanUtils.getFieldValueInAllSuper(object,propertyName);//);//取出object对象中的propertyName属性的值.propertyName包括在object所在类的基类中定义的属性

 

  看代码:

   

  1. public class BeanUtils {  
  2.   
  3.     
  4.     /** 
  5.      * 获取当前类声明的private/protected变量 
  6.      */  
  7.     static public Object getFieldValue(Object object, String propertyName)  
  8.             throws IllegalAccessException, NoSuchFieldException {  
  9.         Assert.notNull(object);  
  10.         Assert.hasText(propertyName);  
  11.         Field field = object.getClass().getDeclaredField(propertyName);  
  12.         field.setAccessible(true);  
  13.   
  14.         return field.get(object);  
  15.     }  
  16.     /** 
  17.      * zhangpf :因为getFieldValue()方法,无法读取super class的属性的值; 
  18.      *                  所以本方法做出扩展,允许读取super class的属性的值; 
  19.      * @param object 
  20.      * @param propertyName 
  21.      * @return 
  22.      * @throws IllegalAccessException 
  23.      * @throws NoSuchFieldException 
  24.      */  
  25.     public static Object getFieldValueInAllSuper(Object object, String propertyName)  
  26.             throws IllegalAccessException, NoSuchFieldException {  
  27.         Assert.notNull(object);  
  28.         Assert.hasText(propertyName);  
  29.         Class claszz=object.getClass();  
  30.         Field field = null;  
  31.           
  32.         do  
  33.         {     
  34.             try{  
  35.                 field = claszz.getDeclaredField(propertyName);  
  36.             }  
  37.             catch(NoSuchFieldException e)  
  38.             {  
  39.                 //e.printStackTrace();  
  40.                 field=null;  
  41.             }  
  42.             claszz=claszz.getSuperclass();  
  43.         }  
  44.         while(field==null&&claszz!=null);  
  45.           
  46.         if(field==nullreturn null;  
  47.    
  48.         field.setAccessible(true);  
  49.         return field.get(object);  
  50.     }  
  51. }  

 


 

posted @ 2012-04-12 19:20  张长胜  阅读(2042)  评论(0编辑  收藏  举报