public class 实体类名 implements java.io.Serializable{...}

来源:互联网 发布:安徽网络广播电视台 编辑:程序博客网 时间:2024/04/24 05:05

Java.io.Serializable 这个被继承不会有什么方法,但是有一下好处。


你创建的对象可以被JVM(java虚拟机)序列化,序列化就是有一个自己独特的标识,这样可以用于反序列化。就是下面这句话:

private static final long serialVersionUID = 5866268712137826050L;


详细参考:

序列化运行联营每个序列化类版本号,被称为的serialVersionUID,这是反序列化过程中用于验证序列化对象的发送者和接收者加载类是关于序列化兼容的对象。如果接收器已经装载一个类具有不同的serialVersionUID比相应的发送者的类的对象,然后反序列化将导致InvalidClassException。


如果一个序列化类没有显式声明的serialVersionUID,则序列化运行时将计算默认的serialVersionUID值基于类的各个方面的类,如在Java(TM)中描述的对象序列化规范。然而,强烈建议所有可序列化类中明确声明的serialVersionUID值,因为默认的serialVersionUID的计算是类细节取决于编译器实现,可能会发生变化高度敏感,并因此可能导致反序列化过程中意外InvalidClassExceptions。因此,为了保证不同java编译器实现了一致的serialVersionUID值,序列化类必须声明一个明确的serialVersionUID值。它也强烈建议明确的serialVersionUID声明使用私有修饰符在可能的情况,因为这样的声明仅适用于立即声明类 - 的serialVersionUID字段不作为继承的成员是有用的。


再说一下java.io.Serializable 

网上有一个说的比较详细的:


一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。
好处:
a)比如说你的内存不够用了,那计算机就要将内存里面的一部分对象暂时的保存到硬盘中,等到要用的时候再读入到内存中,硬盘的那部分存储空间就是所谓的虚拟内存。在比如过你要将某个特定的对象保存到文件中,我隔几天在把它拿出来用,那么这时候就要实现Serializable接口;
b)在进行java的Socket编程的时候,你有时候可能要传输某一类的对象,那么也就要实现Serializable接口;最常见的你传输一个字符串,它是JDK里面的类,也实现了Serializable接口,所以可以在网络上传输。
c)如果要通过远程的方法调用(RMI)去调用一个远程对象的方法,如在计算机A中调用另一台计算机B的对象的方法,那么你需要通过JNDI服务获取计算机B目标对象的引用,将对象从B传送到A,就需要实现序列化接口。

0 0
原创粉丝点击