Java で DagNode クラスを作成しようとしています。これにより、2 つのノードが参照として等しい場合に論理的に等しくなります。
C++ のアイデア (私は C++ 出身です) は、スマート ポインターと参照カウントを使用することです。
ノードが作成されると、そのノードが既に存在する場合はテーブルを検索します。もしそうなら、私は古いものへのポインタを返します。それ以外の場合は、新しいノードを作成します。
コピー コンストラクターやデストラクタなどのオーバーロードされた C++ メソッドは参照カウントを行い、ノードの参照カウントが 0 になると、ノードは上記のテーブルから削除されます。(C++ もメモリを解放します。)
ただし、Java で参照カウントを自動的に行う方法はないようです。(ガベージ コレクションを実行できるように) テーブルからノードを削除するタイミングを知るために、ref-counting を実行する必要があります。また、各関数の開始時と終了時に and を node->incRef()
呼び出すことは避けたいと考えています。node->decRef()
この C++ イディオムを Java でどのように行うのでしょうか?