zoukankan      html  css  js  c++  java
  • BeanUtils用法大全--应用反射技术

    package com.beanutils;

    import java.util.*;

    public class Person ...{
    private String name;
    private String sex;
    private int age;
    private Address address;
    private List goods;
    private Map contact;

    public Person() ...{
    }


    public Person(String name) ...{
     
    this.name = name;
    }


    public Person(String name,String sex) ...{
     
    this.name = name;
     
    this.sex = sex;
    }


    public String getName() ...{
     
    return this.name;
    }


    public void setName(String name) ...{
     
    this.name = name;
    }


    public String getSex() ...{
     
    return this.sex;
    }


    public void setSex(String sex) ...{
     
    this.sex = sex;
    }


    public int getAge() ...{
     
    return this.age;
    }


    public void setAge(int age) ...{
     
    this.age = age;
    }


    public Address getAddress() ...{
     
    return this.address;
    }


    public void setAddress(Address address) ...{
     
    this.address = address;
    }


    public List getGoods() ...{
     
    return this.goods;
    }


    public void setGoods(List goods) ...{
     
    this.goods = goods;
    }


    public Map getContact() ...{
     
    return this.contact;
    }


    public void setContact(Map contact) ...{
     
    this.contact = contact;
    }


    public void sayHello() ...{
      System.out.println(
    "Hello World!");
    }


    public void f(String str) ...{
      System.out.println(
    "Person.f()..." + str);
    }


    public String toString() ...{
     
    return "Person.toString()...";
    }

    }

    =========================================================================================

    package com.beanutils;

    public class Address ...{
    private String province;
    private String city;
    private String street;
    private String zipcode;

    public String getProvince() ...{
     
    return this.province;
    }


    public void setProvince(String province) ...{
     
    this.province = province;
    }


    public String getCity() ...{
     
    return this.city;
    }


    public void setCity(String city) ...{
     
    this.city = city;
    }


    public String getStreet() ...{
     
    return this.street;
    }


    public void setStreet(String street) ...{
     
    this.street = street;
    }


    public String getZipcode() ...{
     
    return this.zipcode;
    }


    public void setZipcode(String zipcode) ...{
     
    this.zipcode = zipcode;
    }

    }

    ============================================================================

    一个测试类

    package com.beanutils;

    import java.util.*;
    import org.apache.commons.beanutils.*;

    public class BeanUtilsTest ...{
    public static void main(String[] args) throws Exception ...{
         Address address
    = new Address();
         address.setProvince(
    "hunan");
         address.setCity(
    "changsha");
         address.setStreet(
    "wuyilu");
         address.setZipcode(
    "410000");
        
         List goods
    = new ArrayList();
         goods.add(
    "sporting");
         goods.add(
    "singing");
         goods.add(
    "dancing");
        
         Map contact
    = new HashMap();
         contact.put(
    "student","Tom");
         contact.put(
    "teacher","Lucy");
        
         Person person
    = new Person();
         person.setName(
    "Mike");
         person.setSex(
    "male");
         person.setAge(
    25);
         person.setAddress(address);
         person.setGoods(goods);
         person.setContact(contact);
        
        
    //BeanUtilsTest.cloneBean(person);
        
    //BeanUtilsTest.copyProperties(person);
        
    //BeanUtilsTest.propertyUtilsCopyProperties(person);
        
    //BeanUtilsTest.copyProperty(person);
        
    //BeanUtilsTest.describe(person);
        
    //BeanUtilsTest.propertyUtilsDescribe(person);
        
    //BeanUtilsTest.getArrayProperty(person);
        
    //BeanUtilsTest.getIndexedProperty(person);
        
    //BeanUtilsTest.getMappedProperty(person);
        
    //BeanUtilsTest.getNestedProperty(person);
        
    //BeanUtilsTest.populate(person);
        
        
    //得到一个bean中指定属性的值,相当于getter
    //     System.out.println(BeanUtils.getProperty(person,"name"));
    //     //修改一个bean中指定属性的值,相当于setter
    //     BeanUtils.setProperty(person,"name","Tom");
    //     System.out.println(BeanUtils.getProperty(person,"name"));
    //     System.out.println("--------------------------------------");
    //    
         BeanUtilsTest.invokeMethod();
    //     System.out.println("--------------------------------------");
    //     BeanUtilsTest.getAccessibleMethod();
    //     System.out.println("--------------------------------------");
    //     BeanUtilsTest.invokeConstructor();
    //     System.out.println("--------------------------------------");
         BeanUtilsTest.getAccessibleConstructor();
        
        }

       
       
    //BeanUtils.cloneBean()--克隆目标bean
        public static void cloneBean(Person person) throws Exception ...{
         Person p
    = (Person)BeanUtils.cloneBean(person);
         System.out.println(p.getAddress().getCity());
         System.out.println(person.getAddress().getCity());
         p.getAddress().setCity(
    "hengyang");
         System.out.println(
    "---------------------------");
         System.out.println(p.getAddress().getCity());
         System.out.println(person.getAddress().getCity());
         System.out.println(p.getAddress()
    == person.getAddress());
        }

       
       
    //BeanUtils.copyProperties()--拷贝目标bean中属性的值,能进行类型转换
        public static void copyProperties(Person person) throws Exception ...{
         Person p
    = new Person();
         BeanUtils.copyProperties(p,person);
         System.out.println(p.getAddress().getCity());
         System.out.println(person.getAddress().getCity());
         p.getAddress().setCity(
    "hengyang");
         System.out.println(
    "---------------------------");
         System.out.println(p.getAddress().getCity());
         System.out.println(person.getAddress().getCity());
         System.out.println(p.getAddress()
    == person.getAddress());
        }

       
       
    //PropertyUtils.copyProperties()--拷贝目标bean中属性的值,不能进行类型转换
        public static void propertyUtilsCopyProperties(Person person) throws Exception ...{
         Person p
    = new Person();
         PropertyUtils.copyProperties(p,person);
         System.out.println(p.getAddress().getCity());
         System.out.println(person.getAddress().getCity());
         p.getAddress().setCity(
    "hengyang");
         System.out.println(
    "---------------------------");
         System.out.println(p.getAddress().getCity());
         System.out.println(person.getAddress().getCity());
         System.out.println(p.getAddress()
    == person.getAddress());
        }

       
       
    //BeanUtils.copyProperty()--拷贝一个值给目标Bean的一个属性,能进行类型转换
        public static void copyProperty(Person person) throws Exception ...{
         Person p
    = new Person();
         BeanUtils.copyProperty(p,
    "age","12");
         System.out.println(p.getAge());
        }

       
       
    //BeanUtils.describe()--得到一个bean的所有描述,返回的是一个map
        public static void describe(Person person) throws Exception ...{
         Map map
    = BeanUtils.describe(person);
         Set set
    = map.keySet();
        
    for(Iterator it = set.iterator(); it.hasNext(); ) ...{
          Object o
    = it.next();
          System.out.println(o
    + ": " + map.get(o));
         }

         System.out.println(
    "--------------------------------------");
    //     Collection c = map.values();
    //     for(Object o : c) {
    //      System.out.println(o);
    //     }
        }

       
       
       
    //PropertyUtils.describe()--得到一个bean的所有描述,返回的是一个map
        public static void propertyUtilsDescribe(Person person) throws Exception ...{
         Map map
    = PropertyUtils.describe(person);
         Set set
    = map.keySet();
        
    for(Iterator it = set.iterator(); it.hasNext(); ) ...{
          Object o
    = it.next();
          System.out.println(o
    + ": " + map.get(o));
         }

         System.out.println(
    "--------------------------------------");
    //     Collection c = map.values();
    //     for(Object o : c) {
    //      System.out.println(o);
    //     }
    //     System.out.println("----------------------------");
        }

       
       
    //BeanUtils.populate()--使用一个map为bean赋值
        public static void populate(Person person) throws Exception ...{
         Map map
    = PropertyUtils.describe(person);
         Person p
    = new Person();
         BeanUtils.populate(p,map);
         System.out.println(p.getName());
         System.out.println(p.getSex());
         System.out.println(p.getAge());
         System.out.println(p.getAddress().getProvince());
         System.out.println(p.getGoods().get(
    1));
         System.out.println(p.getContact().get(
    "student"));
         System.out.println(
    "--------------------------------------");
        }

       
       
    //BeanUtils.getArrayProperty()--将目标bean的一个属性的值转换成一个字符串数组
        public static void getArrayProperty(Person person) throws Exception ...{
         String[] array
    = BeanUtils.getArrayProperty(person,"goods");
        
    for(String str : array) ...{
          System.out.println(str);
         }

        }

       
       
    //BeanUtils.getIndexedProperty()--可以检索目标bean中数组或集合类型的属性指定索引的值
        public static void getIndexedProperty(Person person) throws Exception ...{
         System.out.println(BeanUtils.getIndexedProperty(person,
    "goods[0]"));
         System.out.println(BeanUtils.getIndexedProperty(person,
    "goods",1));
        }

       
       
    //BeanUtils.getMappedProperty()--可以检索目标bean中具有map类型的属性中对应键的值
        public static void getMappedProperty(Person person) throws Exception ...{
         System.out.println(BeanUtils.getMappedProperty(person,
    "contact(student)"));
         System.out.println(BeanUtils.getMappedProperty(person,
    "contact","teacher"));
        }

       
       
    //BeanUtils.getNestedProperty()--得到目标bean中嵌套属性的值
        public static void getNestedProperty(Person person) throws Exception ...{
         System.out.println(BeanUtils.getNestedProperty(person,
    "address.province"));
        }

       
       
    //MethodUtils.invokeMethod()--动态调用方法
        public static void invokeMethod() throws Exception ...{
        
    //MethodUtils.invokeMethod(Object arg1,String arg2,Object[] arg3)
        
    //arg1 一个bean的名称
        
    //arg2 指定bean的方法名
        
    //arg3 方法中的参数列表
         MethodUtils.invokeMethod(new Person(),"sayHello",new Object[]...{});
        
    //MethodUtils.invokeMethod(Object arg1,String arg2,Object arg3)
        
    //arg1 一个bean的名称
        
    //arg2 指定bean的方法名
        
    //arg3 方法中的参数
         MethodUtils.invokeExactMethod(new Person(),"f","hello");;
        }

       
       
    //MethodUtils.getAccessibleMethod()--得到方法
        public static void getAccessibleMethod() throws Exception ...{
        
    //MethodUtils.getAccessibleMethod(Class clazz,String methodName,Class[] parameterTypes)
        
    //clazz 一个bean的类对象
        
    //methodName bean中的方法名
        
    //parameterTypes 方法中参数的类型列表
         System.out.println(MethodUtils.getAccessibleMethod(Person.class,"f",new Class[]...{String.class}));
         System.out.println(MethodUtils.getAccessibleMethod(Person.
    class,"f",String.class));
        }

       
       
    //ConstructorUtils.invokeConstructor()
        public static void invokeConstructor() throws Exception ...{
        
    //ConstructorUtils.invokeConstructor(Class clazz,Object[] args)
        
    //clazz 一个bean的类对象
        
    //args bean的构造函数的参数列表
         Person p1 = (Person)ConstructorUtils.invokeConstructor(Person.class,new Object[]...{});
         Person p2
    = (Person)ConstructorUtils.invokeConstructor(Person.class,"Tom");
         System.out.println(p2.getName());
        }

       
       
    //ConstructorUtils.getAccessibleConstructor()
        public static void getAccessibleConstructor() throws Exception ...{
        
    //ConstructorUtils.getAccessibleConstructor(Class clazz,Class[] parameterTypes)
        
    //clazz 一个bean的类对象
        
    //parameterTypes bean的构造函数的参数类型列表
         System.out.println(ConstructorUtils.getAccessibleConstructor(Person.class,String.class));
         System.out.println(ConstructorUtils.getAccessibleConstructor(Person.
    class,new Class[]...{String.class,String.class}));
        }

    }

    ===========================================================================

    package com.beanutils;

    import java.util.*;
    import org.apache.commons.beanutils.*;

    public class BasicDynaBeanTest ...{
    public static void main(String[] args) throws Exception ...{
     
    //创建一个动态属性数组
         DynaProperty[] properties = new DynaProperty[] ...{
          
    new DynaProperty("name",String.class),
          
    new DynaProperty("sex",String.class),
          
    new DynaProperty("age",int.class),
          
    new DynaProperty("address",Map.class)
         }
    ;
         
        
    //创建一个BasicDynaClass的实例
        
    //第一个参数设置动态bean的名称
        
    //第二个参数设置BasicDynaBean的类对象
        
    //第三个参数设置一个动态属性数组
         BasicDynaClass dynaClass = new BasicDynaClass("customer",BasicDynaBean.class,properties);
        
    //通过dynaClass得到动态bean的一个实例
         DynaBean customer = dynaClass.newInstance();
        
        
    //给属性设值
         Map map = new HashMap();
         map.put(
    "province","hunan");
         map.put(
    "city","changsha");
         map.put(
    "street","wuyilu");
         map.put(
    "zipcode","410000");
         customer.set(
    "name","Tom");
         customer.set(
    "sex","male");
         customer.set(
    "age",25);
         customer.set(
    "address",map);
        
         System.out.println(
    "name: " + customer.get("name"));
         System.out.println(
    "sex: " + customer.get("sex"));
         System.out.println(
    "age: " + customer.get("age"));
         System.out.println(
    "address: " + ((Map)customer.get("address")).get("province")
        
    + " " + ((Map)customer.get("address")).get("city")
        
    + " " + ((Map)customer.get("address")).get("street")
        
    + " " + ((Map)customer.get("address")).get("zipcode"));
        }

    }

    ========================================================================

    package com.beanutils;

    import org.apache.commons.beanutils.*;

    public class ConvertUtilsTest ...{
    public static void main(String[] args) ...{
      Person person
    = new Person();
     
    //将任意的实例转变为String,用法非常简单相当与调用toString()方法
      System.out.println(ConvertUtils.convert(person));
     
      String str
    ="123456";
      String ary
    = "45789";
     
    //int ss = Integer.parseInt(str);
      Integer s =(Integer)ConvertUtils.convert(str,Integer.class);
     
      String[] values
    = ...{"123","456","789","aafs"};
      Object o
    = ConvertUtils.convert(values,Integer.class);
      System.out.println(o);
        }

    }

    ================================================================================

    package com.beanutils;

    import java.util.*;
    import org.apache.commons.beanutils.*;

    public class LazyDynaBeanTest ...{
    public static void main(String[] args) ...{
     
    //创建一个LazyDynaBean的实例,它就和普通的bean一样
         LazyDynaBean customer = new LazyDynaBean();
         customer.set(
    "name","Tom");
         customer.set(
    "sex","male");
         customer.set(
    "age",new Integer(25));
        
    //以map方式给属性赋值,第一个参数是属性名,第二个参数是键,第三个参数是值
         customer.set("address","province","hunan");
        
    //如果属性是一个数组或集合,可以以索引方式赋值
        
    //第一个参数是数组名或集合名,第二个参数是索引,第三个参数是数组和集合中存的值
         customer.set("orders",0,"order001");
         customer.set(
    "orders",1,"order002");
        
         System.out.println(
    "name: " + customer.get("name"));
         System.out.println(
    "sex: " + customer.get("sex"));
         System.out.println(
    "age: " + customer.get("age"));
         System.out.println(
    "address: " + ((Map)customer.get("address")).get("province"));
         System.out.println(
    "orders: " + customer.get("orders",0) + " " + customer.get("orders",1));
        }
  • 相关阅读:
    玩转 CSS3 3D 技术
    什么是网站劫持?
    html5 播放 rtsp
    display:none和visibility:hidden两者的区别
    css中div透明度有几种方法设置?
    前端有架构吗?
    HTML a标签打开新标签页避免出现安全漏洞,请使用“noopener”
    写给刚入门的前端工程师的前后端交互指南
    为什么会出现CSS前缀?
    cookies和session得一些理解
  • 原文地址:https://www.cnblogs.com/dandre/p/4507069.html
Copyright © 2011-2022 走看看