------- android培训、java培训、期待与您交流! ----------
根据属性名取得值,
//"x"-->"X"-->"getX"-->MethodGetX-->
Member member = new Member(3,5);
String propertyName = "x";
PropertyDescriptor pd = new PropertyDescriptor(propertyName, member.getClass());
Method methodGetX = pd.getReadMethod();//得到get方法
Object retVal = methodGetX.invoke(member);
System.out.println(retVal);
Method methodSetX = pd.getWriteMethod();//得到Set方法
methodSetX.invoke(member,7);
System.out.println(member.getX());
以上代码点击重构抽取方法还可以变成这样(右键-->Refactor-->Extract Method)
public static void main(String[] args) throws Exception {
Member member = new Member(3,5);
String propertyName = "x";
Object retVal = getProperty(member, propertyName);
System.out.println(retVal);
Object value=7;
setProperty(member, propertyName, value);
System.out.println(member.getX());
}
private static void setProperty(Object member, String propertyName,
Object value) throws IntrospectionException,
IllegalAccessException, InvocationTargetException {
PropertyDescriptor pd2 = new PropertyDescriptor(propertyName, member.getClass());
Method methodSetX = pd2.getWriteMethod();//得到Set方法
methodSetX.invoke(member,value);
}
private static Object getProperty(Object member, String propertyName)
throws IntrospectionException, IllegalAccessException,
InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(propertyName, member.getClass());
Method methodGetX = pd.getReadMethod();//得到get方法
Object retVal = methodGetX.invoke(member);
return retVal;
}
采用遍历BeanInfo的所有属性方式来查找和设置某个RefectPoint对象的x属性。在程序中把一个类当作JavaBean
来看,就是调用IntroSpector.getBeanInfo方法,得到的BeanInfo对象封装了把这个类当作JavaBean的结果信息。
还可以使用Beanutils工具包做以上的事情对javabean进行操作:
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
jar包:
commons-beanutils-1.8.3.jar
commons-logging-1.1.1.jar
例如:
Object value=7;
setProperty(member, propertyName, value);
System.out.println(BeanUtils.getProperty(member, "x").getClass().getName());
BeanUtils.setProperty(member, "x", "9");
System.out.println(member.getX());
/*//java7的新特性
Map map={name:"zxx",age:18};
BeanUtils.setProperty(map, "name", "cjl");
*/
BeanUtils.setProperty(member, "brithday.time","111");
System.out.println(BeanUtils.getProperty(member, "brithday.time"));
PropertyUtils.setProperty(member, "x", 9);
System.out.println(PropertyUtils.getProperty(member, "x"));
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/