使用java反射机制获取javabean中的私有属性

public   class   TestReflect   { 
           public   static   void   main(String[]   args){ 
                      APerson   a=new   APerson(); 
                      Field   fields[]   =   a.getClass().getDeclaredFields(); 
                      String[]   name   =   new   String[fields.length]; 
                      Object[]   value   =   new   Object[fields.length]; 
                            
                      try{
                                Field.setAccessible(fields,   true);
                                for   (int   i   =   0;   i   <   name.length;   i++)   { 
                                       name[i]   =   fields[i].getName(); 
                                       System.out.println(name[i]   +   "-> "); 
                                       value[i]   =   fields[i].get(a); 
                                       System.out.println(value[i]); 
                                } 
                      } 
                      catch(Exception   e){ 
                               e.printStackTrace(); 
                      } 
          }
}

class   APerson{ 
                private  String   name; 
                private  String   sex; 
                private   int   age; 

                APerson(){ 
                       name= "John "; 
                       sex= "男 "; 
                       age=45; 
                }

                public   int   getAge()   {
                                return   age;
                }
                public   void   setAge(int   age)   {
                                this.age   =   age;
                }
                public   String   getName()   {
                                return   name;
                }
                public   void   setName(String   name)   {
                                this.name   =   name;
                }
                public   String   getSex()   {
                                return   sex;
                }
                public   void   setSex(String   sex)   {
                                this.sex   =   sex;
                }
}

以上代码中,Field.setAccessible(fields,   true); 是最为关键的一点。

在使用java反射机制获取 JavaBean 的属性值时,如果该属性被声明为private 的,需要将setAccessible设置为true. 默认的值为false.

posted @ 2011-06-20 16:43  戴眼镜的码农  阅读(852)  评论(0编辑  收藏  举报