Java 对象/类ID是如何工作的?

Java 对象/类ID是如何工作的?,java,Java,我使用对象/类这个术语是因为我不明白它实际上是什么。从,第33页 对象版本 序列化过程为每个类分配一个版本ID。如果我们 如果更改有关该类的任何内容,则版本ID将更改 标题与内容不匹配 从代码来看,因为id是作为静态创建的,所以我假设它是每个类的 但这与标题对象版本相矛盾。另外,我不明白如何在运行时更改“类” 我认为教授正在交替使用对象和类这两个术语,使事情更难理解 ID是为每个对象还是为每个类分配的?这种混淆源于其本身,相关章节多年来一直被称为“对象版本控制”,尽管他们现在已经将其更改为“序列

我使用对象/类这个术语是因为我不明白它实际上是什么。从,第33页

对象版本

序列化过程为每个类分配一个版本ID。如果我们 如果更改有关该类的任何内容,则版本ID将更改

标题与内容不匹配

从代码来看,因为id是作为静态创建的,所以我假设它是每个类的

但这与标题
对象版本
相矛盾。另外,我不明白如何在运行时更改“类”

我认为教授正在交替使用对象和类这两个术语,使事情更难理解


ID是为每个对象还是为每个类分配的?

这种混淆源于其本身,相关章节多年来一直被称为“对象版本控制”,尽管他们现在已经将其更改为“序列化对象的版本控制”;在这本书和Javadoc中,它一直是个谜。这是一种常见的困惑,或者说是草率,你完全可以接受它。告诉你的教授

每个类都是唯一的。这是正确的。而且更改不必在运行时进行。因此类版本的标题可能更准确?虽然在序列化时该类不是保存的实体,因此可能这就是为什么他们称其为对象版本——只是猜测。@nativist.bill.cutting但这是在序列化的上下文中。假设您创建了一个类为
Foo
的对象,并将其序列化到磁盘。然后修改
Foo
类,并尝试将磁盘上的对象反序列化为新
Foo
类的对象。ID将有所不同,以确保兼容性。因此,在这种情况下,将存在同一类(名称)的不同版本的对象…该类已更改。。。正如你所说,它现在是一个新的类。它可能有相同的名字,但因为它已经改变了,我会称它为一个新的类,因此注释保持不变,每个类都有一个ID。