13

オブジェクトをObjectOutputStream(FileOutputStream(File))でシリアル化し、類似の。で逆シリアル化しますInputStreams。これらのシリアル化されたファイルの内部を(できればEclipseで)調べる方法はありますか?必要なすべての属性が書き込まれたかどうかを確認できますか?

編集:グーグル検索は否定的だった

4

4 に答える 4

5

いくつかのテストを作成します (Eclipse の組み込み JUnit サポートを使用)。

これらのファイルの「内部を調べる」唯一の方法ObjectInputStream(FileInputStream(File))は、バイトコードの達人で 16 進エディタを使用しない限り、 を使用することです。実際にテストを行っている場合は、「内部を調べる」必要はありません。

于 2011-02-03T17:59:12.710 に答える
4

これは本格的なエディターではありませんが、Eamonn McManus は、シリアル化された blob を人間が読める形式に解読するトランスコーダーを作成しました。 http://weblogs.java.net/blog/2007/06/12/disassembly-serialized-java-objects

バイナリの互換性とパフォーマンスが考慮される場合は、Serializable ではなく Externalizable を検討するのに適した時期です。

于 2011-02-04T07:57:48.503 に答える
2

これは「自立した」回答ではなく、OrangeDog の回答を拡張したものです。

"(Eclipse の組み込み JUnit サポートを使用して) いくつかのテストを作成します。"

シリアル化をテストする場合は、次のことを行うテストを記述します。

  1. 1 つのオブジェクトをファイルにシリアル化します。
  2. 同じファイルから別のオブジェクトに逆シリアル化します。
  3. 両方のオブジェクトを比較して、直列化解除されたオブジェクトに、直列化されたはずのすべての値が含まれていることを確認します (つまり、 「必要な属性がすべて書き込まれている」ことを確認します)。
于 2011-02-03T18:08:53.777 に答える
1

ファイルをロードしてオブジェクトをデシリアライズするクラスを作成します。次に、Eclipse のデバッグ ビューを使用して、(ブレークポイントを設定して) オブジェクトを参照します。

于 2011-02-03T18:01:33.427 に答える