java在递归调用中保持引用
我有一个自定义对象,它有一些“计数器”字段。此对象在将被递归调用的函数中递增这些字段。因此,我需要在每次调用函数时重新创建对象,以便重置计数器字段,但如果函数处于递归调用中,则不重新创建。有道理吗
目前,我正在通过重载该方法来实现这一点,这样它就不是true递归,而是传递带有计数器的同一个对象,以便保留我的计数
基本上,我现在所做的就是如下所示:
static Counter count(Object parent)
{
Counter newCounter = new Counter();
newCounter = count(parent, newCounter);
return newCounter;
}
static Counter count(Object parent, Counter currentCounter)
{
Object cur = new Object(parent);
if(cur.isChild())
Counter.child++;
else if(cur.isParent())
{
Counter.parent++;
count(cur, currentCounter);
}
return currentCounter;
}
有更好的方法吗?或者一种我不需要过载的方式?哦,而且我需要保持静态的主要方法,因为我不能轻易地改变系统中的其他地方
# 1 楼答案
使用静态变量:(假设只有一个线程)
或用于多线程: