问题二:java 中的序列化是什么意思 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。
java序列化中如果要标记为不可序列化的字段,可以使用关键字:tranisant修饰。Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想 用serialization机制来保存它。
一般来说,没有必要自己实现序列化接口,直接交给Java虚拟机是上策。实现了序列化接口的类,如果其成员不需要序列化进去,则使用transient关键字进行修饰。
我们通过让类实现Java.io.Serializable 接口可以将类序列化。这个接口是一个制造者(marker)接口。也就是说,对于要实现它的类来说,该接口不需要实现任何方法。它主要用来通知Java虚拟机(JVM),需要将一个对象序列化。
对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。Java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。
1、如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable向后兼容。
2、只能说父类实现了serializable,那子类就相当于有了实现了这个接口的功能,所以d、e是会被序列化的。
3、实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。
4、确定类的版本 比如你有个 BallGame类,实现了Serializable接口 当你修改类的数据时,比如你把一个int改为long,或者变动了2个属性的顺序,你应该同时修改这个UID的值。
5、写了一个java实体类,implements了Serializable接口,让serialversionUID自动生成方法:点击类旁边的警告符号;选择Add generated serial version ID即可自动生成。
6、对象通过实现Serializable接口或者Externalizable接口,Externalizable接口也是实现了Serializable接口 serialVersionUID通常是对象的哈希码,主要用于对象的版本控制唯一标识。序列化和反序列化的时候类中的serialVersionUID一定要一致。