1

誰かがオブジェクトのシリアル化がどのように機能するか教えてもらえますか?グーグルを試してみましたが、そのためいつも細部に迷いました。クラスにプライベート/パブリック変数、静的変数、プライベート/パブリックメソッドがあるオブジェクトをいつシリアル化するかを知る必要があります。すべてがシリアル化されますか、それとも変数だけですか?アクティビティ間で渡されるようにシリアル化される多くのメソッドを持つオブジェクトを持つことは悪い習慣ですか?

4

1 に答える 1

4

オブジェクトの状態、つまりフィールドのみがシリアル化されます。メソッド自体はシリアル化されていません。ただし、生成されたバージョン番号も事実上状態の一部であり、それはどのメソッドが存在するかによって異なります。確かに、フィールドを使用してこの動作を変更できますがserialVersionUid、それでも注意が必要です。

個人的には、Javaバイナリシリアル化を使用しないことを強くお勧めします。これは、後方互換性と前方互換性を管理するのが非常に難しいことになります。利用可能な他の多くのシリアル化フレームワークがあり、通常、Javaシリアル化よりも開始するのに少し多くの作業が必要ですが、最終的には移植性と保守性が向上します。個人的に私はプロトコルバッファのファンですが、偏見があります:)

于 2013-02-11T18:16:41.313 に答える