欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PropertyDescriptor  

程序员文章站 2022-06-08 10:18:48
...
/**
 * 
 */
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;
	}

}