黑马程序员技术交流社区

标题: javabean修改属性问题 [打印本页]

作者: 陆强强    时间: 2012-7-15 06:08
标题: javabean修改属性问题
本帖最后由 陆强强 于 2012-7-15 19:26 编辑

存在一个JavaBean,它可能包含若干个int类型属性,属性名未知,现在我要把所有int的属性值修改为100,怎么做
class JavaBean {
               
        private  String string;
        private  Integer integer;
        private  int x;
        private  int  y;
        
        public JavaBean() {
               
        }
        public String getString() {
                return string;
        }
        public void setString(String string) {
                this.string = string;
        }
        public Integer getInteger() {
                return integer;
        }
        public void setInteger(Integer integer) {
                this.integer = integer;
        }
        public boolean getX() {
                return x;
        }
        public void setX(int x) {
                this.x = x;
        }
        public double getY() {
                return Y;
        }
        public void setY(int y) {
                this.y = y;
        }

作者: 全海波    时间: 2012-7-15 06:52
数据库改呀
作者: 周恺    时间: 2012-7-15 07:09
public static void main(String[] args)throws Exception
{
  JavaBean javaBean=new JavaBean();//创建你的JavaBean对象
  BeanInfo beaninfo=Introspector.getBeanInfo(javaBean.getClass());//使用Introspector类的静态方法getBeanInfo(.class)返回一个BeanInfo对象.
  PropertyDescriptor [] pds=beaninfo.getPropertyDescriptors();//获取属性表述器数组
  for(PropertyDescriptor pd:pds) //迭代属性表述器
  {
   
   if (pd.getPropertyType().equals(int.class))//根据你需要的条件,将指定属性筛选出来
   {
   
    Method m=pd.getWriteMethod(); //下面就是赋值动作
    m.invoke(javaBean,100);
    break;
   }
  }
  System.out.println(javaBean.getX());//打印出100
  
}
作者: 陆强强    时间: 2012-7-15 09:21
周恺 发表于 2012-7-15 07:09
public static void main(String[] args)throws Exception
{
  JavaBean javaBean=new JavaBean();//创建 ...

再问一下,Integer和int可以一起改么。比如一个int x;
还有一个Integer y;
作者: 周恺    时间: 2012-7-15 10:15
陆强强 发表于 2012-7-15 09:21
再问一下,Integer和int可以一起改么。比如一个int x;
还有一个Integer y;

.int和Integer没有什么交集,所以,有个笨办法
for(PropertyDescriptor pd:pds) //迭代属性表述器
          {
          
           if (pd.getPropertyType().equals(int.class)||
                           pd.getPropertyType().equals(Integer.class))//根据你需要的条件,将指定属性筛选出来
           {
            
            Method m=pd.getWriteMethod(); //下面就是赋值动作
            m.invoke(javaBean,100);
            
           }
          }
判断条件改下就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2