返回信息流在Java中,调用方法的时候传递一个对象进去,怎样不改变原对象?
这是一条镜像帖。来源:北邮人论坛 / java / #40345同步于 2015/4/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
Java里向方法传递对象作参数,怎样能不改变原对象
wislov
2015/4/30镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
第二种
【 在 nuanyangyang 的大作中提到: 】
: 你是想自己写个不改变原对象的方法呢,
: 还是要求你的对象的成员变量不能被那个被调用的方法修改?
其实我想问的是,传对象的时候产生一个新的对象是原来那个对象的拷贝,感觉java做这个有点麻烦
【 在 nuanyangyang 的大作中提到: 】
:
: 把域设成private,并提供一个getter来获得它的值,但不提供setter。
自己写的话,请实现clonable接口...
此外,已经有很多的开源工具实现了深拷贝,推荐使用Cloner,这货使用了反射的方式来进行深拷贝...
但是,粗读过这货的代码,其中有一个蛋疼的bug,切记,有IO流等操作的时候慎用!
【 在 wislov 的大作中提到: 】
: 嗯。和拷贝有关吧
【 在 wislov 的大作中提到: 】
: 其实我想问的是,传对象的时候产生一个新的对象是原来那个对象的拷贝,感觉java做这个有点麻烦
Java里对象都是引用类型。如果你有一个变量是引用类型的,那么它其实只是对象的引用。传入函数的也只是引用。
但是,关键问题是,不是所有的对象都是可以拷贝的。比如文件(InputStream之类的)。如果真的想说“允许拷贝”,应该实现cloneable接口,而且指明拷贝到底是浅拷贝还是深拷贝。