Java提供了两种对象实例化的方式:①序列化②外部序列化
一、序列化
实现方式: 通过实现Serializable接口实现对象的序列化。
序列化特点:(重点)
- ①如果一个类被序列化,那么它的子类也能够被序列化。
- ②由于static代表类的成员,transient代表对象的临时数据,因此被声明为这两种类型的数据成员是不能被序列化的。
序列化的优缺点:
优点:序列化可以将对象的状态写在流里进行网络传输,或是保存到文件、数据库中,并在需要时可以把该流读取出来重新构造一个相同的对象。
缺点:影响系统的性能,如果不是需要要使用序列化,尽量不要使用序列化。
什么情况下使用序列化?
- 1)需要通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中。
- 2)序列化能实现深度复制,即可以复制引用的对象。
与序列化相对的就是反序列化,反序列化过程中,serialVersionUID起着非常重要的作用,每个类都有一个特定的serialVersionUID,在反序列化过程中,通过该参数判定类的兼容性。如果不一致将出现异常。
二、外部序列化
外部序列化接口定义如下:
public interface Externalizable extends Serializable{
void readExternal( ObjectInput in);
void writeExternal( ObjectOutput out);
}
就是自己实现接口中的读写方法,这种方式难度大,在编程时有更好的灵活性,对需要持久化的那些属性可以进行控制,可能会提高性能。
暂时不去掌握吧。