A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xscn 高级黑马   /  2013-8-23 16:41  /  1114 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xscn 于 2013-8-24 10:30 编辑

用beaninfo批量操作javabean的时候的代码
  1. package cn.itcast.day1;
  2. import java.beans.*;
  3. import java.lang.reflect.*;
  4. public class IntroSpectorDemo2 {

  5.         public static void main(String args[])throws Exception {
  6.                 BeanDemo bd = new BeanDemo();               
  7.                 introSpector(bd);
  8.         
  9.         }
  10.         private static void introSpector(Object bd)throws Exception {
  11.                 BeanInfo bi = Introspector.getBeanInfo(bd.getClass());
  12.                 PropertyDescriptor[] pd = bi.getPropertyDescriptors();
  13.                
  14.                 for (PropertyDescriptor pds : pd) {
  15.                         String propertName=pds.getName();
  16.                         Class propertClass=pds.getPropertyType();
  17.                         Method writeMethod=pds.getWriteMethod();
  18.                         
  19.                         
  20.                         //if(propertName.equals("name"))
  21.                         //    writeMethod.invoke(bd, "zhangsan");
  22.                                 
  23.                         //else if(propertName.equals("age"))
  24.                          //   writeMethod.invoke(bd, 20);
  25.                          if(propertClass==String.class)
  26.                                  writeMethod.invoke(bd,"zhangsan1");
  27.                          else if(propertClass==int.class)//
  28.                                  writeMethod.invoke(bd,21);                                
  29.                                 
  30.                                 Method readMethod = pds.getReadMethod();
  31.                                 Object retval = readMethod.invoke(bd);
  32.                                 System.out.println(retval);
  33.                         
  34.                 }
  35.         }
  36. }
复制代码
打印结果
21
class cn.itcast.day1.BeanDemo
zhangsan1


用PropertyDescriptor匹配属性名和属性类型都有这个class cn.itcast.day1.BeanDemo
问题就是第二行这个东西是怎么来的????????




下面附上Javabean类,帮忙找找原因
  1. package cn.itcast.day1;

  2. public class BeanDemo {

  3.         private String n;
  4.         private int a;

  5.         public BeanDemo() {
  6.                 super();
  7.         }

  8.         public String getName() {
  9.                 return n;
  10.         }

  11.         public void setName(String name) {
  12.                 this.n = name;
  13.         }

  14.         public int getAge() {
  15.                 return a;
  16.         }

  17.         public void setAge(int age) {
  18.                 this.a = age;
  19.         }
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

倒序浏览
沙发。自己解决了,原因就是每个类都从上帝那里继承了getClass()方法,对javabean内省时判断到get和set就会扫描到这个方法。
不想打印出来,在循环里添加判断条件就行了
回复 使用道具 举报
楼主你真快啊
回复 使用道具 举报

哈哈,找了半小时的原因,这还快啊
回复 使用道具 举报
xscn 发表于 2013-8-23 18:01
哈哈,找了半小时的原因,这还快啊

好好学看好你哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马