我正在尝试用 Java 编写 DagNode 类,其中两个节点在逻辑上相等,如果它们作为引用相等。
C++(我来自 C++)中的想法是使用智能指针和引用计数:
创建节点后,如果该节点已存在,我将在某个表中查找。如果是这样,我将返回一个指向旧指针的指针。否则,创建一个新节点。
重载的 C++ 方法(如复制构造函数和析构函数)会进行 ref-counting,当节点的 ref-count 降至 0 时,该节点会从上述表中逐出。(C++ 也会释放内存。)
但是,似乎没有办法在 Java 中自动进行引用计数。我需要进行引用计数以知道何时从表中逐出节点(以便对其进行垃圾收集),并且我真的想避免在每个函数的开始和结束时 调用node->incRef()
和。node->decRef()
我们如何在 Java 中实现这个 C++ 习语?