Class A {
   Vector v;
   public Vector getV() {
      v = new Vector();
      for(int i = 0; i < 10; i++)
      v.addElement(i);
   }
}Class B {
   private A a;
   public B () {
      a = new A();
   }
   public void test() {
       Vector v1 = new Vector();
       Vector v2 = new Vector();
       v1 = a.getV();
       v2 = a.getV(); //此时两个Vector的地址都是一个
       //如果接下来我对v1进行修改,必然会影响到v2;
       //请问如何才能在上面得到两个不同的v1,v2。地址不同,但内容相同,都是a.v;
    }
}
//如何克隆

解决方案 »

  1.   

    你写的类有问题
    第一:getV() 根本没有return任何对象,肯定编译不过去
    第二: Vector v;没有构造函数没有参数,而且是类成员,则会自动初始化,不用再在构造函数里初始化了。如果你想clone的话,则只需重载clone这个函数就可以了
    任何对象都有clone()这个函数,想返回这个对象的clone(),就return o.clone();
    想要了解更多,看看thinking in java就好了
      

  2.   

    Vector已经覆写了clone方法,你应该显式调用clone方法才能获得一个Vector的完全拷贝
    jdk中关于Vector的clone方法已经写的很清楚啦
    Returns a clone of this vector. The copy will contain a reference to a clone of the internal data array, not a reference to the original internal data array of this Vector object.
      

  3.   

    Vector已经覆写了clone方法,你应该显式调用clone方法才能获得一个Vector的完全拷贝
    完全同意
      

  4.   

    Vector中存放的是reference,当原来的Vector发生改变后,会影响到后面全部的Vector。该问题自己已经解决~~。唉。