2012-03-21 10 views
2

オブジェクトをシリアル化すると、ポインタに従います。私は木のデータ構造を持っていて、ツリー内のルートと他のすべてのオブジェクトが直列化可能であるとします。私のクラスは、このシリアライゼーションとポインタJava

クラスツリー ... プライベート・ノードのルートのようになります。 ...

それだけで明示的に宣言されたインスタンス変数というルートをたどることができるだろうか?指摘された要素がメンバーではないにもかかわらず、ツリー全体を節約できますか?また、それが復元されると、データ構造全体が再作成されますか?

+0

Javaにはポインタがありません。 – Perception

+0

Javaにはポインタがあります。 Havaはポインタを処理しており、ポインタがなければ動作しません。ユーザーが使用するのが難しくなっています。オブジェクト参照は抽象化されたポインタの形式です。実際、それらはJavaの定義として実装されているものとして実装されています。ポインタはありますが、簡単にアクセスできるポインタの算術演算や機能はありません。 –

答えて

7

はい、ルートオブジェクトとそのすべてのフィールド(およびこれらのオブジェクトのすべてのフィールドなど)がSerializableの場合、シリアル化によって構造全体が保存されます(見つかった各ポインタ/参照に従う)。保存されない唯一のものは、transientまたはstaticと宣言されたフィールドです。

シリアル化はJavaであり、circular referencesを処理するには十分なスマートさえあることに注意してください。

+1

さらに、シリアル化できない親クラスにあるデータをシリアル化しないようにすることもできます。 –

+0

私はそれを考慮しなかったので、継承階層全体がシリアライズ可能な限り保存されますか? – rubixibuc

+0

シリアル化プロセスをカスタマイズするために(たとえば、シリアル化されないスーパークラスのフィールドを処理するために)行うことができます。これは興味深い読んだかもしれません:http://java.sun.com/developer/technicalArticles/Programming/serialization/ – aroth

関連する問題