オブジェクトのシリアル化はどのように機能しますか?どのようにオブジェクトがデシリアライズされ、インスタンスはコンストラクタを呼び出さずにシリアル化された日付から作成されますか?オブジェクトのシリアル化
答えて
私は言語が与えられていないので、この回答は無関係です。
オブジェクトをシリアライズすると、オブジェクトを再構築するためのすべての必須情報が取得可能な方法でエンコードされます。これには通常、オブジェクトのタイプとすべてのインスタンス変数の値が含まれます。
オブジェクトを直列化解除すると、正しいサイズのメモリ内の領域が割り当てられ、新しいオブジェクトが直列化されたものと同じになるように、直列化された情報を使用して設定されます。
実行中のプログラムは、実際にコンストラクタを呼び出すことなくメモリ内のこの新しいオブジェクトを参照できます。
これは説明していない詳細はほとんどありませんが、これはシリアル化/デシリアライゼーションの一般的な考え方です。
+1はいこれは彼の質問が指していることです。 – TStamper
Javaについて話していますか?そうであれば、シリアライゼーションは奇妙なオブジェクト作成メカニズムです。バックドアはネイティブコードを使用して、コンストラクタを呼び出さずにオブジェクトを作成します。したがって、直列化可能なクラスを設計するときは、デシリアライズによって作成されたクラスが、コンストラクタのパスと同じ不変条件(キーフィールドが初期化されている)を維持することを確認する必要があります。 Javaでオブジェクトを作成する第3の方法は、クローニングによるものであり、同様の問題が適用されます。
クローンとシリアル化は、フィールドの値をクローンまたはデシリアライゼーションプロセスによって返される値と異なる値に設定する必要がある場合は、最終フィールドの使用とうまく対話しません。
Josh Blochの「Effective Java」には、これらの問題をより深く説明する章があります。 .NETについて
(この答えはあまりにも他の言語に適用される場合がありますが、私は唯一のJavaで直列化を使用しました)
:これは決定的か教科書答えではない、と私はすべてのアウト間違っている可能性があります...
.NETのシリアライズは、バイナリと他のもの(XMLまたはXMLの一般的な導関数)に分離する必要があります。バイナリのシリアライゼーションは主に私にとってはブラックボックスですが、オブジェクトを現在の状態でシリアライズして復元することができます。 XML直列化は、通常、カスタムISerializable実装を追加することによってオーバーライドされない限り、オブジェクトのパブリックフィールド/プロパティを直列化するだけです。
XMLのシリアル化の場合、.NETはReflectionを使用して、どのフィールドとプロパティが同等の要素に変換されるかを判断します。 [XMLSerializable]属性を追加すると、フィールドレベルで他の属性([XMLAttribute]など)を適用することで調整できるデフォルトの動作が実装されます。
メタデータ(Reflectionが依存する)は、すべてのオブジェクトメンバーとその属性とアドレスを格納します。これにより、シリアライザは出力の構築方法を決定できます。
- 1. シリアル化(TextWriter、オブジェクト)とシリアル化(XmlWriter、オブジェクト)
- 2. オブジェクトのシリアル化
- 3. MSMQ複合オブジェクトのシリアル化/逆シリアル化
- 4. オブジェクトxmlのシリアル化/逆シリアル化
- 5. C++オブジェクトのシリアル化
- 6. Scalaオブジェクトのシリアル化
- 7. オブジェクトのシリアル化プロセス?
- 8. Javaのシリアル化オブジェクト
- 9. オブジェクトに逆シリアル化
- 10. シリアル化とjqueryオブジェクト
- 11. Xmlシリアル化オブジェクト(HttpBrowserCapabilities)
- 12. 逆シリアル化JSONオブジェクト
- 13. JACKSONのオブジェクトのシリアル化
- 14. JSON JAXBオブジェクト型のシリアル化
- 15. JavaオブジェクトのBlazeDsシリアル化
- 16. PHPセッションのシリアル化オブジェクト
- 17. インターフェイスとオブジェクトの逆シリアル化
- 18. XML XNAオブジェクトの逆シリアル化
- 19. オブジェクトのシリアル化クエリとクラスパス
- 20. Dlib "オブジェクトのシリアル化エラー"
- 21. シリアル化、オブジェクトの保存
- 22. Rebus RabbitMQオブジェクトのシリアル化
- 23. NHibernate - 逆シリアル化オブジェクトのロック
- 24. MVCアプリケーションのCookieからオブジェクトをシリアル化、逆シリアル化するC#
- 25. オブジェクトをJSONにシリアル化する - 動的プロパティのシリアル化
- 26. シリアル化可能クラスに含まれるオブジェクト型enumのシリアル化
- 27. オブジェクトをXmlDocumentにシリアル化
- 28. JSON逆シリアル化オブジェクトHTTPWebResponse
- 29. Avroシリアル化オブジェクトがシリアル化できない問題
- 30. Javaでスカラー逆シリアル化されたオブジェクトを逆シリアル化する
http://forum.codecall.net/csharp-tutorials/7918-tutorial-visual-studio-2008-c-serialization.html –
これがあなたの答えではないかどうかを教えてください。 –