如果在一个使用较小参数递归调用的函数中,并且在这个函数中,我们正在创建一个类的对象。递归创建的对象将具有相同的名称,因此我们不能保留名称的唯一性。我们如何在 Java 中处理这种情况?
问问题
1574 次
1 回答
2
我认为这个问题源于一个误解。在 Java 中,你给局部变量的名字在代码运行时是 100% 不相关的——唯一的目的是让你,程序员,指定你正在谈论的变量(通过给出它的名字,并让编译器通过查看本地范围、其上方的范围等来弄清楚您的意思)。
因此,如果您有一个调用自身的递归方法,并在此方法中声明保存新对象的变量,那么就 Java 而言,它们不会发生冲突,它们都将正确地引用内存中不同位置的不同对象。
如果您实际上的意思是“我想记录我在递归方法中创建的所有新对象,但让它们明显可引用”,那么首先要创建一个集合(ArrayList
例如)您的递归方法的参数之一 - 那么您可以将所有新制作的对象添加到此集合中,当它完全返回时,它将充满您的新制作对象。但如果这还不够区分,那么您需要问“什么可以区分这些对象?” 这将取决于对象的用途(递归方法的某些参数是否应该是“名称”的一部分?其他状态?还是只需要随机且唯一?)。
于 2013-04-20T14:26:37.853 回答