2013-04-20 117 views
-2

如果在函数中以较小的参数递归调用,并且在此函数内部,我们正在创建一个类的对象。递归创建的对象将具有相同的名称,因此我们无法保留名称唯一性。我们如何在Java中处理这种情况?在Java中递归调用创建新对象的函数

+0

您是否有代码例如? – Maroun 2013-04-20 14:25:59

+4

对象没有名字,变量有名字,但它们也有一个作用域 – 2013-04-20 14:28:38

回答

2

我认为这个问题源于误解。在Java中,您给本地变量的名称在代码运行时是100%无关紧要的 - 唯一的目的是让程序员指定您正在讨论的变量(通过提供其名称并使编译器通过查看本地范围,它上面的范围等来弄清楚你的意思)。所以,如果你有一个自我调用的递归方法,并且在这个方法中声明了包含新对象的变量,那么就Java而言就不会有冲突,并且它们都将正确地引用不同的地方的不同对象在记忆中。


如果你实际上意味着“我要记录所有新对象我使我的递归方法,而是让他们有明显的赔偿与”,然后通过使集合(ArrayList为例)启动的一个参数传递给你的递归方法 - 然后你可以添加所有新创建的对象到这个集合中,当它完全返回时,它将充满你新创建的对象。但是,如果这还不够明显,那么你需要问'什么可以区分这些物体?'这将取决于对象的用途(递归方法的某些参数应该是“名称”的一部分吗?还有其他一些状态?还是只需要是随机的和唯一的?)。

+0

你是对的,但提问者也想访问旧对象 – shiladitya 2013-04-20 14:28:59

+0

@shiladitya:你在哪里找到这样的请求问题? – 2013-04-20 14:29:51

+0

这就是我推断。否则这个问题没有意义:) – shiladitya 2013-04-20 14:30:46