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