读书人

java Bean的反照

发布时间: 2012-09-04 14:19:30 作者: rapoo

java Bean的反射

直接上代码。

?

package com.test.bean;public class Person {private String name;private int age;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}
package com.test.bean;
import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import org.apache.commons.beanutils.BeanUtils;public class BeanMain {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {Class<?> beanClass = Class.forName("com.test.bean.Person");Object obj = beanClass.newInstance();// 第一种方法String propertyName = "age";PropertyDescriptor pd = new PropertyDescriptor(propertyName, beanClass);// 按照属性名称得到属性相关类Method writer = pd.getWriteMethod();// 得到写的方法Method reader = pd.getReadMethod();// 得到读的方法writer.invoke(obj, 22);// 写方法操作Object age =  reader.invoke(obj);// 读方法操作System.out.println(age);// 第二种方法BeanInfo beanInfo = Introspector.getBeanInfo(beanClass);PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();for (PropertyDescriptor pd1 : pds) {// System.out.println(pd1.getName());if (pd1.getName().equals("name")) {writer = pd1.getWriteMethod();// 得到写的方法reader = pd1.getReadMethod();// 得到读的方法writer.invoke(obj,"haoran_10");// 写方法操作Object name =  reader.invoke(obj);// 读方法操作System.out.println(name);break;}}//第三种方法:通过开源jar包,优点:自动转换类型,支持级联操作BeanUtils.setProperty(obj, "sex", "man");System.out.println(BeanUtils.getProperty(obj, "sex"));}}
?

读书人网 >编程

热点推荐