写了一个反射的方法,传进来一个对象,这个对象被封装进一个List,例如:
pojo是传进来的对象
List objs = new ArrayList();
for(int i = 0; i < 2; i++){
   //操作,要改变pojo哈
   objs.add(pojo);
}
这样一来,因为是传址调用,List的三个对象都被改变成一样的了,有没有办法不一样?

解决方案 »

  1.   

    这个和反射没什么关系嘛。
    你的pojo的类有没有定义clone方法嘛,拷贝一个不就对了。
      

  2.   

    可以在循环里重新把传进来的对象重新new一下
      

  3.   

    不明白楼主的意思啊,在一个循环中定义一个类,传过得参数应该理解为(加入类为Pojo)
    Pojo pojo=new Pojo();
    List objs = new ArrayList(); 
    for(int i = 0; i  < 2; i++){ 
       //操作,要改变pojo哈 
       objs.add(pojo); 
    } 这样你传进的类是一样的,这样的话List中的元素一定是一样的啊。我想应该定义一个函数。
    List objs = new ArrayList(); 
    for(int i=0;i<2;i++){
    void test(Pojo pojo){
       objs.add(pojo); 

    }
    这样就可以传进不同的内容了
      

  4.   

    先clone之后,做相应的改变,可以改变属性只类的
      

  5.   

    但是各位,pojo类是不确定的啊,用反射的出发点之一,就是在不确定pojo的情况下set相应属性。
      

  6.   

    结果为
    ori=emplo[name=chenpeng,salary=40000.0,hireDay=Mon May 05 00:00:00 CST 2008]
    copy=emplo[name=chenpeng,salary=44000.0,hireDay=Sat Jan 01 00:00:00 CST 2000]
      

  7.   

    8楼的是别的帖子的答案....
    顺便说的是,你传进来的是一个pojo对象,你在方法内部循环执行操作,即使用反射设置其属性值,
    Class c = pojo.getClass();//之后,c是同一个啊,你想怎么处理啊?
      

  8.   

    先clone之后,做相应的改变,可以改变属性
      

  9.   

    o(∩_∩)o...回复9楼,已经ok了,用了另一种反射来实例化,稍后贴出代码,现在准备开会了~~~~~~~~~