は、私たちがこのようなノードとポインタによって表される任意のグラフがあるとします。今Javaによる自動ポインタスウィズリング?
class Node
{
public ValueType data;
public ArrayList<Node> adj;
}
を、私はそれのコピーを取るか、書き込み/ディスク(AKAシリアライズ/デシリアライズ)でそれを読んでもらいたいです。私はまた、それが検索アルゴリズム+連想配列を使用して行うことができることを知っています。そして、この方法はswizzlingと呼ばれています。ここで
は私の質問に行く:
私はJavaでシリアライズとしてクラスを宣言することで、この機能は自動的にあなたのために提供されていることを聞きました。 (私には魔法のように聞こえるよ!)
この文は正しいですか? Javaは自動的にBFSを実行してグラフを走査し、ポインタを揺らしますか?つまり、私のためにオブジェクトをシリアル化/デシリアライズしてオブジェクトを複製しますか? (構造は全く同じですが、新しいノードと更新されたポインタを持つまったく新しい新しいオブジェクト)
ある場合は、ポインタをコピーしたいだけの場合はどうなりますか?元のポインタを保持するためだけにオブジェクトを直列化したいのですが?
私はこれに関するコメントを感謝します。 :-)
Javaには未処理のポインタがありません。実際のメモリアドレスにアクセスすることはできません。あなたはオブジェクトへの参照を持っています(実際にはポインタですが、そのことを誰にも知らせず、C++参照と混同しないでください)。 –
こちらをご覧ください。もしあなたが見るなら、それはすべて文書の中にあります。 –
@BrianRoach:間違って申し訳ありません。私はC++の考え方をしていました。 – Nima