注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

java反射操作方法实现  

2012-12-07 18:48:54|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
  Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
上实例:
Java代码 
  1. package com.test.bean;  
  2.   
  3. public class Person {  
  4.     private String name;  
  5.     private int age;  
  6.     private String sex;  
  7.       
  8.     public String getName() {  
  9.         return name;  
  10.     }  
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.     public int getAge() {  
  15.         return age;  
  16.     }  
  17.     public void setAge(int age) {  
  18.         this.age = age;  
  19.     }  
  20.     public String getSex() {  
  21.         return sex;  
  22.     }  
  23.     public void setSex(String sex) {  
  24.         this.sex = sex;  
  25.     }  
  26.       
  27.       
  28. }  
Java代码 
  1. package com.test.bean;  
Java代码 
  1. import java.beans.BeanInfo;  
  2. import java.beans.Introspector;  
  3. import java.beans.PropertyDescriptor;  
  4. import java.lang.reflect.Method;  
  5.   
  6. import org.apache.commons.beanutils.BeanUtils;  
  7.   
  8. public class BeanMain {  
  9.   
  10.     /** 
  11.      * @param args 
  12.      * @throws Exception 
  13.      */  
  14.     public static void main(String[] args) throws Exception {  
  15.         Class<?> beanClass = Class.forName("com.test.bean.Person");  
  16.         Object obj = beanClass.newInstance();  
  17.   
  18.         // 第一种方法  
  19.         String propertyName = "age";  
  20.         PropertyDescriptor pd = new PropertyDescriptor(propertyName, beanClass);// 按照属性名称得到属性相关类  
  21.         Method writer = pd.getWriteMethod();// 得到写的方法  
  22.         Method reader = pd.getReadMethod();// 得到读的方法  
  23.         writer.invoke(obj, 22);// 写方法操作  
  24.         Object age =  reader.invoke(obj);// 读方法操作  
  25.         System.out.println(age);  
  26.   
  27.         // 第二种方法  
  28.   
  29.         BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);  
  30.         PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();  
  31.         for (PropertyDescriptor pd1 : pds) {  
  32.             // System.out.println(pd1.getName());  
  33.             if (pd1.getName().equals("name")) {  
  34.                 writer = pd1.getWriteMethod();// 得到写的方法  
  35.                 reader = pd1.getReadMethod();// 得到读的方法  
  36.                 writer.invoke(obj,"haoran_10");// 写方法操作  
  37.                 Object name =  reader.invoke(obj);// 读方法操作  
  38.                 System.out.println(name);  
  39.                 break;  
  40.             }  
  41.         }  
  42.           
  43.         //第三种方法:通过开源jar包,优点:自动转换类型,支持级联操作  
  44.         BeanUtils.setProperty(obj, "sex""man");  
  45.         System.out.println(BeanUtils.getProperty(obj, "sex"));  
  46.     }  
  47.   
  评论这张
 
阅读(321)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016