有人能告诉我序列化对象的工作原理。我尝试使用谷歌搜索,但由于这个原因,我总是迷失在细节中。我只需要知道何时序列化一个对象,该对象的类具有私有/公共变量,静态变量和私有/公共方法。一切都被序列化或只是变量?像一个具有许多方法的对象是一个坏习惯,这些方法将被序列化以通过活动传递?
答案 0 :(得分:4)
只有对象的状态被序列化 - 换句话说,就是字段。方法本身不是序列化的。但是,生成的版本号也是状态的有效部分,这取决于存在的方法。无可否认,您可以使用serialVersionUid
字段更改此行为 - 但它仍然很棘手。
就我个人而言,我强烈建议使用Java二进制序列化来反对 - 它最终会非常难以管理向后和向前的兼容性。还有许多其他可用的序列化框架,这些框架通常需要比Java序列化更多的工作才能开始,但最终会更加便携和可维护。就个人而言,我是Protocol Buffers的粉丝,但我有偏见:)