当前位置:  技术问答>java相关

在一个方法如:public Vector getDistinctVector(Vector old,Vector new),如何可以保证 old 不被改写,因为old是从外面传入来的,old本

    来源: 互联网  发布时间:2015-11-03

    本文导语:  在一个方法如:public Vector getDistinctVector(Vector old,Vector new),如何可以保证 old 不被改写,因为old是从外面传入来的,old本身并没有限制! 可不可以在上面的参数中设什么保留字可以保证不被改写? | ...

在一个方法如:public Vector getDistinctVector(Vector old,Vector new),如何可以保证 old 不被改写,因为old是从外面传入来的,old本身并没有限制! 可不可以在上面的参数中设什么保留字可以保证不被改写?

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

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

final也不能完全解决问题,
final仅不允许修改VECTOR自身,但VECTOR内的对象仍可修改,

如果你要安全,可能要自己写CLONE方法,实现深层CLONE


如果想完全解决问题,

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

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

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

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

|
很烦人的问题

|
解决办法:笨的
在方法外另外生成一个Vector对象(V2),把原来的Vector(V1)的值copy过去,
参数使用的时候V1,方法使用完毕用V2替换掉V1

封装一下,就可以安全地使用了

    
 
 

您可能感兴趣的文章:

  • java命名空间java.util类vector<e>的类成员方法: vector定义及介绍
  • Collections.sort()方法,已经实现Comparable接口,为什么无法将Vector排序?
  • java命名空间java.util类vector<e>的类成员方法: elementdata定义及介绍
  • 求素数,用vector存储的实现方法
  • java命名空间java.util类vector<e>的类成员方法: elementcount定义及介绍
  • 用循环建立一个VECTOR。里面放的是对象BOX,然后在下面的程序中要用的BOX的方法属性?出错,大仙指点。
  • java命名空间java.util类vector<e>的类成员方法: capacityincrement定义及介绍
  • 一个以ResultSet为参数,返回Vector的方法总是发生异常,兄弟们帮看看!
  • java命名空间java.util类vector<e>的类成员方法: clone定义及介绍
  • 我想问的是,返回的 ResultSet 中的某个字段(int 型),如何放到一个 int[]数组里去。因为 ResultSet 不知道怎样取 size,我又不想用 vector, ResultSet的getArray()方法也是莫名其妙。
  • java命名空间java.util类vector<e>的类成员方法: capacity定义及介绍
  • c++ vector(向量)使用方法详解(顺序访问vector的多种方式)
  • java命名空间java.util类vector<e>的类成员方法: removeallelements定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: lastelement定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: firstelement定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: trimtosize定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: tostring定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: addelement定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: elements定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: setsize定义及介绍
  • java命名空间java.util类vector<e>的类成员方法: elementat定义及介绍
  • java命名空间java.lang类character.unicodeblock的类成员方法: old_italic定义及介绍
  • mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt.im类inputcontext的类成员方法: getinputmethodcontrolobject定义及介绍
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • java命名空间java.awt.im.spi接口inputmethod的类成员方法: getcontrolobject定义及介绍
  • 突然想到一个奇怪的问题:如果一个非abstract类中包含一个空方法体(及非Java代码写的方法体是空的)的native方法,编译会通过吗?
  • java命名空间java.lang类runtime的类成员方法: runfinalization定义及介绍
  • 构造方法到底怎么用,构造方法体中可以放些什么东西,它和一般方法有什么本质区别功能上
  • java命名空间java.awt.im.spi接口inputmethod的类成员方法: dispose定义及介绍
  • jquery中slideUp()方法与slideDown()方法
  • java命名空间javax.swing类rowsorter<m>的类成员方法: allrowschanged定义及介绍
  • jquery中fadeIn()方法与fadeOut()方法(示例)
  • java命名空间java.lang类securitymanager的类成员方法: getsecuritycontext定义及介绍
  • 这句话对不对 用final修饰的方法是不能被该类的子类所重载的方法 ?
  • java命名空间java.awt.im.spi接口inputmethod的类成员方法: hidewindows定义及介绍
  • finalize()方法与System.runFinalization()方法有什么区别
  • java命名空间java.beans类statement的类成员方法: execute定义及介绍
  • 关于“创建重载现存方法的方法”
  • java命名空间java.lang类stacktraceelement的类成员方法: getmethodname定义及介绍
  • 关于多线程的奇怪问题,run()方法只会被start()方法自动启动一次吗?
  • java命名空间java.awt.im.spi接口inputmethod的类成员方法: activate定义及介绍
  • append()方法在哪些类里有啊?分别有什么作用?老是看到这个方法
  • java命名空间javax.swing类jcomponent的类成员方法: processcomponentkeyevent定义及介绍
  • servlet的service()方法与doGet()、doPost()方法是什么关系?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3