Java 在不同类中的递归方法之间隐藏状态参数
我在类a中有一个方法doA,它调用类B中的方法doB,它再次调用doA。映射作为参数在每次调用中传递,在doB中会发生变化。 所有递归调用都需要该映射,但这是特定实现状态的一部分,尽管我实际上希望类a与该状态无关,因为其他实现不需要它,当然我不想将完全相同的问题转移到其他地方Java 在不同类中的递归方法之间隐藏状态参数,java,oop,design-patterns,recursion,Java,Oop,Design Patterns,Recursion,我在类a中有一个方法doA,它调用类B中的方法doB,它再次调用doA。映射作为参数在每次调用中传递,在doB中会发生变化。 所有递归调用都需要该映射,但这是特定实现状态的一部分,尽管我实际上希望类a与该状态无关,因为其他实现不需要它,当然我不想将完全相同的问题转移到其他地方 class A { public void doA(Map state) { b.doB(state) } } class B { public void doB(Map state
class A {
public void doA(Map state) {
b.doB(state)
}
}
class B {
public void doB(Map state) {
if (someCondition) {
a.doA(processState(state))
}
}
}
我能想到的唯一方法是创建一个临时映射,并在满足条件时复制所有元素,并在使用后取消引用临时映射,以便垃圾收集器能够处理它。您能详细说明什么是保留引用吗?我更改了描述,因为引用的东西不是真的很重要。重要的是,在所有通话中都需要保留状态,我不想让A知道任何关于该状态的信息。如果我理解正确的话。无论B在映射状态上做什么,都不应该反映在A中。理想情况下,B应该创建参数状态的副本,并在这种情况下对其进行操作。而不是直接作用于参数引用,这也会影响。