zoukankan      html  css  js  c++  java
  • 对javabean的内省操作

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

    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.commons.beanutils.PropertyUtils;

    public class IntroSpectorTest {

     /**
      * @param args
      */
     public static void main(String[] args) throws Exception {
      // TODO Auto-generated method stub
      ReflectPoint pt1 = new ReflectPoint(3,5);
      
      String propertyName = "x";
      //"x"-->"X"-->"getX"-->MethodGetX-->
      Object retVal = getProperty(pt1, propertyName);
      System.out.println(retVal);
      
      Object value = 7;
      
      setProperties(pt1, propertyName, value);

      System.out.println(BeanUtils.getProperty(pt1, "x").getClass().getName());
      BeanUtils.setProperty(pt1, "x", "9");
      System.out.println(pt1.getX());
      /*
      //java7的新特性
      Map map = {name:"zxx",age:18};
      BeanUtils.setProperty(map, "name", "lhm");
      */
      BeanUtils.setProperty(pt1, "birthday.time", "111");
      System.out.println(BeanUtils.getProperty(pt1, "birthday.time"));
      
      PropertyUtils.setProperty(pt1, "x", 9);
      System.out.println(PropertyUtils.getProperty(pt1, "x").getClass().getName());
      
     }

     private static void setProperties(Object pt1, String propertyName,
       Object value) throws IntrospectionException,
       IllegalAccessException, InvocationTargetException {
      PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,pt1.getClass());
      Method methodSetX = pd2.getWriteMethod();
      methodSetX.invoke(pt1,value);
     }

     private static Object getProperty(Object pt1, String propertyName)
       throws IntrospectionException, IllegalAccessException,
       InvocationTargetException {
      /*PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
      Method methodGetX = pd.getReadMethod();
      Object retVal = methodGetX.invoke(pt1);*/
      
      BeanInfo beanInfo =  Introspector.getBeanInfo(pt1.getClass());
      PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
      Object retVal = null;
      for(PropertyDescriptor pd : pds){
       if(pd.getName().equals(propertyName))
       {
        Method methodGetX = pd.getReadMethod();
        retVal = methodGetX.invoke(pt1);
        break;
       }
      }
      return retVal;
     }

    }

  • 相关阅读:
    职场“十不要”,让你少奋斗30年
    360与QQ在用户界面上的明显BUG
    urlMappings在asp.net2.0,asp.net4.0中的差异
    NHibernate主键生成方式
    MDaemon 常用视频教程
    sqlserver 差异备份与还原示例
    没有不死的爱情, 只有平淡的亲情——如何维系我们的婚姻
    25 个在 Web 中嵌入图表的免费资源
    atoi,atol,strtod,strtol,strtoul实现类型转换
    人生之精华,胜读十年书
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3235647.html
Copyright © 2011-2022 走看看