Der*_*rek 2 java recursion pass-by-reference pass-by-value
所以我有一个算法迫使我递归地传递一个对象作为参数,并在递归的不同深度上设置对象的值.问题是Java不允许我这样做,因为它们传递的是价值或其他只是让我搞砸的东西.如何确保传入的对象保留值集?
Jon*_*eet 10
您永远不会在Java中将对象作为参数传递.您可以传递引用值或原始值.参数始终按值传递.Java根本没有pass-by-reference.
如果您传入对象的引用,并且您希望确保您调用的代码不会更改该对象中的数据,那么您的选项是:
编辑:只是为了说清楚,如果你有:
Foo f = new Foo();
Run Code Online (Sandbox Code Playgroud)
然后的值f是不一个Foo对象.它是对象的引用Foo.如果你现在打电话:
doSomething(f);
Run Code Online (Sandbox Code Playgroud)
然后将值f复制为参数的原始值doSomething.这种行为基本上是传值的定义.没有什么doSomething可以改变的价值f- 它之后仍然会引用同一个对象.所述数据内的该对象可能已经改变,但它不会是不同的对象.
在一个现实世界的比喻中:如果我给你一份我的地址,你可以去画前门,但你不能改变我住的地方.
| 归档时间: |
|
| 查看次数: |
3728 次 |
| 最近记录: |