public Enumeration getContent( String sql )
   {
       User u = new User();
       Enumeration e = null;
       Vector v =new Vector(3);
       ResultSet rs = this.getResultSet(sql);
       try
       {
           while( rs.next() )
           {     
               u.setId( rs.getInt("id"));
               u.setName( rs.getString("name"));
               u.setIcon( rs.getString("icon"));
               u.setContent( rs.getString("content"));
               u.setEmail( rs.getString("email"));
               u.setFbdate( rs.getString("fbdate"));
               u.setHome( rs.getString("home"));
               u.setIp( rs.getString("ip"));
               u.setQQ( rs.getString("ip"));
               u.setReply( rs.getString("reply"));
               u.setRetime( rs.getString("retime"));
               v.addElement( u );
           }
           Object[] tt = new User[ v.size()];
           tt = v.toArray();
           for( int i=0;i<tt.length;i++ )
               System.out.println( tt[i]);
           e = v.elements();
       }
       catch(SQLException ex )
       {
           ex.printStackTrace();
           e=null;
       }
       return e;
   } 
结果为什么都相同啊?? 
0
sdfsdfds  157
sdfsdfds  157
sdfsdfds  157 如果在while(){}循环中打印
System.out.println( u.toString() );
则不会这样,正好是三个要找的数据

解决方案 »

  1.   

    System.out.println( tt[i]);只会输出地址,应该不会有楼主的输出结果的吧
      

  2.   

    这位兄弟~~你始终使用的是一个对象~~它的引用是一样的啊,你放在容器里面的也是引用啊~~你要把User u = new User();放到循环里面就没有问题了
    按你这样所有得到的都是最后一条记录啊
      

  3.   

    smlovetp(IT菜鸟) 说的对,v.addElement( u ); 保存的是引用,所以每次保存的都是同一个对象。
      

  4.   

    System.out.println( tt[i]);我已经对他们的toString()进行了覆盖,所以得到的是上面的结果
    谢谢各位大哥,后来我也找到了这个问题,但不明白为什么,经各位老大一说终于明白了,谢谢
      

  5.   

    其实楼上各位所说的引用是这个问题的关键
    你的user只有一块内存空间,每次循环只是在同一个地方修改而已,所以最后三个都是一个地址的内容,所以三个都一样了,你把new User放到循环内部,每次循环都重新new一个就ok了
      

  6.   

    USER 应该是一个BEAN吧,如果是看类似这样试一试
    System.out.println(tt[i].getID());