序列化是一种存储对象状态的机制。根据这个定义,我们可以说对象中的实例变量可以被序列化。
方法是班级的行为。
我们可以使用这些方法设置和获取对象的状态。所以这些方法与类的实例变量有关。
那为什么我们不能在Java中序列化这些方法?
答案 0 :(得分:4)
你对'序列化方法'后的计划是什么?根据定义,对象的状态应该只是其成员。他们的行为不会出现。序列化是保存对象的状态而不是它的行为。
答案 1 :(得分:1)
从OOP的角度来看,对象的状态是其非静态字段的总状态。方法是一种定义对象行为的方法,并且对于该类的所有实例(对象)是通用的,因此它们被定义为Class对象中的字段而不是对象(实例)本身的字段。因此序列化对象将存储其状态,因此只存储其字段,但如果序列化对象的Class对象,则会序列化这些对象的方法(我认为没有理由为什么有人会打扰自己这样做)。 p>
答案 2 :(得分:0)
方法总是被序列化:作为类文件中的字节码。没有实际需要再次序列化它们。
答案 3 :(得分:0)
因为方法对于所有类的实例都是相同的,所以它们仅由其数据驱动。如果你的应用程序中有类定义 - 你有它的方法。
但是数据可以从实例变为实例。
答案 4 :(得分:0)
每个说法的方法没有任何状态,并且序列化方法调用不能用于任何事情。另一方面,序列化线程在概念上是计算的快照或检查点,将有用。
但是,线程在Java中不可序列化,实现起来真的很困难。 (例如,您如何应对在序列化和反序列化线程之间更改其中一个活动方法的代码的情况?)