Javaがオブジェクトをシリアル化するために使用する形式を探しています。デフォルトのシリアル化では、オブジェクトがバイナリ形式でシリアル化されます。特に、プログラムを2回実行すると、同じオブジェクトを異なる方法でシリアル化できるかどうかを知りたいと思います。
オブジェクトがJavaのデフォルトのシリアル化/逆シリアル化ラウンドトリップで動作を維持するために、オブジェクトはどのような条件を満たす必要がありますか?
Javaがオブジェクトをシリアル化するために使用する形式を探しています。デフォルトのシリアル化では、オブジェクトがバイナリ形式でシリアル化されます。特に、プログラムを2回実行すると、同じオブジェクトを異なる方法でシリアル化できるかどうかを知りたいと思います。
オブジェクトがJavaのデフォルトのシリアル化/逆シリアル化ラウンドトリップで動作を維持するために、オブジェクトはどのような条件を満たす必要がありますか?
http://java.sun.com/javase/6/docs/platform/serialization/spec/protocol.htmlにあるJavaObjectSerializationSpecificationが必要です。
すべてのプロパティが同じ値に設定されている2つのオブジェクトがある場合、それらは同じ方法でシリアル化されます。
それが再現可能でなければ、それは役に立たないでしょう!
彼らは常に同じ方法でそれをシリアル化します。そうでない場合、別のプログラムがデータを正しく逆シリアル化して、シリアル化の目的を無効にする可能性があるという保証はありません。
通常、同じデータで同じシングルスレッドアルゴリズムを実行すると、同じ結果になります。
ただし、HashSet
エントリをシリアル化する順序などは保証されません。実際、オブジェクトはシリアル化されると微妙に変更される可能性があります。
@Stephen CのObject.hashCode()の例が好きです。このような非決定論的なハッシュコードがシリアル化されている場合、逆シリアル化すると、ハッシュコードは役に立ちません。たとえば、Object.hashCode()に基づいて機能するHashMapをシリアル化すると、その逆シリアル化されたバージョンは元のマップとは異なる動作をします。つまり、同じオブジェクトを検索すると、2つのマップで異なる結果が得られます。
バイナリが必要ない場合は、Java http://www.json.org/java/でJSON( http://www.json.org/example.html )を使用できます。
または、そのことについてはXML http://www.developer.com/xml/article.php/1377961/Serializing-Java-Objects-as-XML.htm
Javaがオブジェクトをシリアル化するために使用する形式を探しています。
正気ではない、それはどういうわけかそれらを書きます。それがどれほど正確であるかは、あなたが決定することができ、おそらくあなたが決定する必要があります。キャラクターは....ええと、それは関与しますが、車輪の再発明ではなく、オブジェクトをどの状態に再構築するために何を利用できる必要があるかを正確に尋ねましょう。
デフォルトのシリアル化では、オブジェクトがバイナリ形式でシリアル化されます。
それで?(繰り返しになりますが、正気を失おうとしないでください-データが概念化されていない可能性のある問題を定義する必要があるようです)
プログラムを2回実行すると、同じオブジェクトを異なる方法でシリアル化できるかどうか知りたいです。
情報のストリームがある場合、オブジェクトを復元する必要がある状態をどのように判断しますか?