`
lganggang131
  • 浏览: 15015 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

利用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.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics