積少成多

          垃圾堆

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            29 Posts :: 1 Stories :: 5 Comments :: 0 Trackbacks
          /**
           * 改類掩飾了如何通過java.bean的類去獲知bean中的屬性并調用相應的set get方法
           
          */
          import java.beans.*;
          import java.lang.reflect.Method;
          public class JavaBeanInvoke {
              
          public static void main(String args[])throws Exception{
                  test1();
              }
              
              
          public static void test1()throws Exception{
                  Person person 
          = Person.class.newInstance();
                  
                  BeanInfo beaninfo 
          = Introspector.getBeanInfo(Person.class);
                  PropertyDescriptor[] porpertydescriptors 
          = beaninfo.getPropertyDescriptors();
                  
          for(PropertyDescriptor pd:porpertydescriptors){
                      System.out.println(pd.getName());
                      
          if(pd.getName().endsWith("name")){
                          Method setMethod
          =pd.getWriteMethod();
                          Method getMethod
          =pd.getReadMethod();
                          setMethod.invoke(person,
          "ShenZiping");
                          System.out.println(getMethod.invoke(person));
                          
          break;
                      }
                  }
              }
              
              
          public static void test2() throws Exception{
                  Person person 
          = Person.class.newInstance();
                  PropertyDescriptor pd 
          = new PropertyDescriptor("age",Person.class);
                  Method setMethod 
          = pd.getWriteMethod();
                  Method getMethod 
          = pd.getReadMethod();
                  setMethod.invoke(person, 
          56);
                  System.out.println(getMethod.invoke(person));
              }
          }

          /**
           * 代碼舉例了beanUtil包的普遍用法,需要apache的logging包和beanUtils包
           
          */
          import java.text.ParseException;
          import java.text.SimpleDateFormat;
          import java.util.Date;
          import java.util.HashMap;
          import java.util.Map;

          import org.apache.commons.beanutils.*;
          public class BeanUtilsInvoke {
              
          public static void main(String args[])throws Exception{
                  test1();
                  test2();
                  test3();
                  test4();
                  myConvertTest();
              }
              
          public static void test1()throws Exception{
                  Person person 
          = new Person();
                  BeanUtils.copyProperty(person, 
          "name""ShenZiping");
                  System.out.println(
          "test1"+person.getName());
              }
              
          public static void test2() throws Exception{
                  Person person 
          = new Person();
                  Map
          <String, String> map = new HashMap<String, String>();
                  map.put(
          "name""ShenZiping");
                  map.put(
          "age""65");
                  BeanUtils.populate(person, map);
                  System.out.println(
          "test2"+person.getAge());
                  System.out.println(
          "test2"+person.getName());
              }
              
              
          public static void test3() throws Exception{
                  Person p1 
          = new Person();
                  Person p2 
          = new Person();
                  p1.setAge(
          98);
                  p1.setName(
          "ShenZiping");
                  BeanUtils.copyProperties(p2, p1);
                  System.out.println(
          "test3"+p2.getAge());
                  System.out.println(
          "test3"+p2.getName());
              }
              
              
          public static void test4() throws Exception{
                  Person person 
          = new Person();
                  Man man 
          = new Man();
                  person.setName(
          "ShenZiping");
                  BeanUtils.copyProperties(man, person);
                  System.out.println(
          "test4"+man.getName());
              }
              
              
          public static void myConvertTest(){
                  ConvertUtils.register(
          new Converter(){
                      
          public Object convert(Class clazz, Object value){
                          
          if(clazz==Date.class){
                              SimpleDateFormat dateFormat 
          = new SimpleDateFormat("yyyy-MM-dd");
                              
          try{
                                  
          return dateFormat.parse((String)value);
                              }
          catch(ParseException e){
                                  
          throw new RuntimeException("invalid format");
                              }
                          }
                          
          return null;
                      }
                  }, Date.
          class);
                  Date date 
          = (Date)ConvertUtils.convert("2010-01-15",Date.class);
                  System.out.println(
          "myConvertTest"+date);
              }
          }
          posted on 2011-06-13 12:38 思無 閱讀(805) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 谷城县| 潮安县| 连平县| 青川县| 出国| 景泰县| 南丹县| 鲜城| 临清市| 阿克苏市| 怀远县| 苏尼特右旗| 涞水县| 南昌县| 三门县| 五河县| 沁水县| 达拉特旗| 台中县| 鄂州市| 泉州市| 玉屏| 天水市| 阳西县| 武强县| 息烽县| 姜堰市| 云南省| 万荣县| 渭南市| 正镶白旗| 永仁县| 阳泉市| 松溪县| 云南省| 满洲里市| 东台市| 龙南县| 内黄县| 永福县| 舞阳县|