PropertyDescriptor

/**
 * 
 */
package com.depin.test.propertydescriptor;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

/**
 * @author depinhu
 * 获取javabean 的方法的 两种方法
 *         2012-3-14
 */
public class PropertyDescriptorTest {
	public PropertyDescriptorTest() {
	}

	public static void main(String args[]) {
		TestVo testvo = new TestVo();
		testvo.setName("hello world");
		String propertyName = "name";
		PropertyDescriptor pd = null;
		try {
			pd = new PropertyDescriptor(propertyName, testvo.getClass());
			Method getter = pd.getReadMethod();
			Object value = getter.invoke(testvo);
			System.out.println(value);
			
			System.out.println(getProperty_2(testvo, propertyName));
		} catch (IntrospectionException e) {
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private static Object getProperty_2(Object pt1, String propertyName)
			throws Exception {
		BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		Object reValue = null;
		for (PropertyDescriptor pd : pds) {
			if (pd.getName().equals(propertyName)) {
				Method methodGetX = pd.getReadMethod();
				reValue = methodGetX.invoke(pt1);
				break;
			}
		}

		return reValue;
	}
}

/**
 * 
 */
package com.depin.test.propertydescriptor;

/**
 * @author depinhu
 * 
 *         2012-3-14
 */
public class TestVo {
	private int age;
	private String name;

	public TestVo() {
	}

	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;
	}

}

你可能感兴趣的:(PropertyDescriptor)