final
只能只初始化的时候给值

解决方案 »

  1.   

    把old的取出的值在方法用到时候 clone一下 或new一个
      

  2.   

    clone出来的是object来的,是不是 newIt = (Vector)old.clone();?如果 Vector newIt = new Vector();
    newIt = old;再
    newIt.addElement("sdfdsf");会不会把old改了?
      

  3.   

    克隆一个后就不会改了,因为克隆是另创建了一个内容一样的Vector,但在内存钟的地址已经变了,所以再传递时(注意是传引用,传值就没这么麻烦了)不会再影响另一个了。
      

  4.   

    值传递?现在平时一般都没注意是值传递、引用这种理论了:)一般的参数如:pubilc void set(int &para1,int para2)
    这样para1可以引用,para2是传值,但对于public void set(Vector vector)这个vector怎样只是传值???
      

  5.   

    在声明该方法的时候,对参数进行限制
    public Vector getDistinctVector( final Vector old,Vector new)
    加上final关键字
      

  6.   

    clone也不能完全解决问题,
    clone仅CLONE了VECTOR自身,但并没有实现深层CLONE,
    VECTOR里的对象仍然是一样(方法内与方法外)(==)
      

  7.   

    clone也不能完全解决问题,
    clone仅CLONE了VECTOR自身,但并没有实现深层CLONE,
    VECTOR里的对象仍然是一样(方法内与方法外)(==)final也不能完全解决问题,
    final仅不允许修改VECTOR自身,但VECTOR内的对象仍可修改,如果你要安全,可能要自己写CLONE方法,实现深层CLONE
    如果想完全解决问题,
      

  8.   

    解决办法:笨的
    在方法外另外生成一个Vector对象(V2),把原来的Vector(V1)的值copy过去,
    参数使用的时候V1,方法使用完毕用V2替换掉V1封装一下,就可以安全地使用了