现在的位置: 首页 > 综合 > 正文

黑马程序员– 09对于javabean的操作

2018年05月11日 ⁄ 综合 ⁄ 共 2354字 ⁄ 字号 评论关闭

------- 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/

抱歉!评论已关闭.