在下面的A*算法代码中here ,我有 2 个函数 setG
和 calcF
,这样 -
setG
必须在calcF
之前调用 &&calcF
必须在setG
之后调用
换句话说,只是简单地调用setG
而不在后面调用calcF
是不正确的。
此外,仅调用 calcF
而未调用 setG
是不正确的。
在 setG
之前调用 calcF
是不正确的。
如何向客户强制执行此规则?
存在类似的问题here , 但有细微差别。这道题条件比较严格。
最佳答案
第一个想法是将这些函数合并为一个函数setGAndCalcF()
:
private void setG(int g);
private void calcF(T destination);
public void setGAndCalcF(int g, T destination) {
setG(g);
calcF(destination);
}
如果这不可行,您可以在 setG()
和 calcF()
中实现运行时检查(加上文档),这会抛出异常(例如 IllegalStateException
)。
关于java - 如何在两个公共(public)函数之间建立牢固的前后关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21060229/