对象作为实参的传递问题

water0_ 2014-04-06 09:49:50
一个方法,它的参数是对象的话,传递进来的对象,就算是在方法体内赋值给一个新的变量,原来的对象也会随着方法变化变化,有没有一种办法让,对象像基本数据类型一样,不随方法体内的参数变化而变化
...全文
465 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
AndyXuq 2014-06-03
  • 打赏
  • 举报
回复
clone方法可行,其他不靠谱...
wang_huanming 2014-06-03
  • 打赏
  • 举报
回复
不知道楼主这么做的意义是什么? 如果真要这么做,只能在方法体内new一个新的对象,然后在给新对象赋上相应的值返回。如果在方法中直接修改传入的对象,或者是用如下方法 Object obj2 = obj(obj是传进来的参数),然后修改obj2,这两种方法都是不可行的
静山晚风 2014-06-02
  • 打赏
  • 举报
回复
在方法体里new 支持
suchunlong0216 2014-06-01
  • 打赏
  • 举报
回复
在方法体里new
日知己所无 2014-06-01
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390784895 #2,#3的内容可以参考一下
低调Di程序猿 2014-06-01
  • 打赏
  • 举报
回复
引用 16 楼 yankaiwuzhengbo 的回复:
[quote=引用 11 楼 yrr626 的回复:] 这样可以嘛?

    public Object fun(Object o1){
             Object o2 = o1 ;
             //o2 do something
             return o2 ;
    }
正解[/quote]这样是不可以的,o2和o1指向的是同一个堆中的对象,改变o2中的变量,就相当于把o1改变了。
咖啡不放糖 2014-05-31
  • 打赏
  • 举报
回复
貌似没这么用的吧~
yuhouqingchen_2648 2014-05-29
  • 打赏
  • 举报
回复
引用 11 楼 yrr626 的回复:
这样可以嘛?

    public Object fun(Object o1){
             Object o2 = o1 ;
             //o2 do something
             return o2 ;
    }
正解
rumlee 2014-04-10
  • 打赏
  • 举报
回复
如果你不希望别人修改你的对象,那你就应该把对象的属性加上get方法,不要加set方法就可以了。这样属性不就只读了。
weidu23 2014-04-10
  • 打赏
  • 举报
回复
引用 9 楼 water0_ 的回复:
看来也只有Clone这个方法了
楼主,也未必只有clone吧 ? 其实方法还很多 。 比如:在默认情况下,“suppressAccessChecks”是用不到的,倒是说,如果AccessObject无视了Java默认权限,那么“suppressAccessChecks”就起效果 , 此时 ,obj.setObj(value) , 就可以了 。 ---------- 你可以试试这种方法哦 ... 【如果你不理解我说的,请百度、Google 关键字:“suppressAccessChecks” , 你就懂了】 ----------- 当然,Clone是个好办法,毕竟,即便是Java的源码里,也经常这样做,比如JComponent.add( comp ) ;
qingzhishuishou 2014-04-10
  • 打赏
  • 举报
回复
不知道楼主这样做的意义是什么
momoyssy 2014-04-10
  • 打赏
  • 举报
回复
引用类型做为参数,传的是引用的拷背,对像还是原来的对象,这个是java的基本.如果楼主想要把引用类型像基本类型那样传参,可以用克隆(我不知道为什么需要这样的需求,这有点违背了java的基本,不管这个,解决方法总是有的)
private void f(A a){
		A a1 = a.clone();
		//操作a1不会影响a;
	}
冉小叶 2014-04-10
  • 打赏
  • 举报
回复
这样可以嘛?

    public Object fun(Object o1){
             Object o2 = o1 ;
             //o2 do something
             return o2 ;
    }
S117 2014-04-09
  • 打赏
  • 举报
回复
加个final ?
water0_ 2014-04-09
  • 打赏
  • 举报
回复
看来也只有Clone这个方法了
WYJKGHB 2014-04-09
  • 打赏
  • 举报
回复
对象好像都是引用传递吧!
WYJKGHB 2014-04-09
  • 打赏
  • 举报
回复
你是希望它像赋值传递一样吗?
water0_ 2014-04-09
  • 打赏
  • 举报
回复
克隆感觉也太麻烦了
Kristen_Ge 2014-04-06
  • 打赏
  • 举报
回复
对象克隆也许可以,Object类的clone()方法
Fateesdsfa 2014-04-06
  • 打赏
  • 举报
回复
引用 2 楼 water0_ 的回复:
如何 把对象作为方法的参数传进方法里,对象在方法体内发生变而化不改变原对象
在方法里面新生成一个对象
加载更多回复(3)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧