java内省

  内省:操作javabean的属性,属性指的是字段拥有get或set方法叫做属性

    /*   内省 Introspector    */
    public void test() throws Exception{
        BeanInfo info = Introspector.getBeanInfo(Person.class);
        PropertyDescriptor[] pds = info.getPropertyDescriptors();
        for(PropertyDescriptor pd : pds){
            System.out.println(pd.getName());
        }
    }
    @Test
    public void test1() throws Exception{
        Person p =  new Person();
        PropertyDescriptor pdS = new PropertyDescriptor("name", Person.class);
        Method methodS = pdS.getWriteMethod();
        methodS.invoke(p, "大梦");
        PropertyDescriptor pd = new PropertyDescriptor("name", Person.class);
        Method method = pd.getReadMethod();
        System.out.println(method.invoke(p, null));
        System.out.println(pdS.getPropertyType());
    }

  这个有一个第三方jar,叫做BeanUtils(apche),运行这个第三方jar需要一个日志文件commons-loggin.jar

  这个BeanUtils可以支持8种的基本数据类型的相互转化,除此之外的类型转换都需要我们自己写注册转化器

 1     public void test() throws Exception, Exception, Exception {
 2         Person p = new Person();
 3         ConvertUtils.register(new Converter() {
 4             @Override
 5             public Object convert(Class type, Object value) {
 6                 if(value == null){
 7                     return null;
 8                 }
 9                 if(!(value instanceof String)){
10                     throw new ConversionException("数据不是String类型");
11                 }
12                 String str = (String) value;
13                 if(str.trim() == null){
14                     return null;
15                 }
16                 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
17                 try {
18                     return df.parse(str);
19                 } catch (ParseException e) {
20                     throw new ConversionException(e);
21                 }
22             }
23         },Date.class);
24         String brithday = "1920-09-06";    
25         BeanUtils.setProperty(p, "name", "duweneli");
26         BeanUtils.setProperty(p, "pwd", "123456");
27         BeanUtils.setProperty(p, "age", "23");
28         BeanUtils.setProperty(p, "brithday", brithday);
29         System.out.println(BeanUtils.getProperty(p, "name"));
30         System.out.println(BeanUtils.getProperty(p, "pwd"));
31         System.out.println(BeanUtils.getProperty(p, "age"));
32         System.out.println(BeanUtils.getProperty(p, "brithday"));
33     }
34     
35     public void test1(){
36         Map<Integer,String> map = new LinkedHashMap<Integer, String>();
37         map.put(1, "aa"); 
38         map.put(2, "bb"); 
39         map.put(3, "cc");
40         for(Map.Entry<Integer, String> entry : map.entrySet()){
41             Integer key = entry.getKey();
42             String value = entry.getValue();
43             System.out.println(key+"="+value);
44             
45         }

  

如果有使用请标明来源:http://www.cnblogs.com/duwenlei/
原文地址:https://www.cnblogs.com/duwenlei/p/3510601.html