java实现doc内容对比_比较java.io.Externalizable和java.io.Serializable.doc

即使你没有用过对象序列化(serialization),你可能也知道它。但你是否知道Java还支持另外一种形式的对象持久化,外部化(externalization)?下面是序列化和外部化在代码级的关联方式:public interface Serializable {}

public interface Externalizable extends Serializable {void readExternal(ObjectInput in);void writeExternal(ObjectOutput out);

}序列化和外部化的主要区别外部化和序列化是实现同一目标的两种不同方法。下面让我们分析一下序列化和外部化之间的主要区别。通过Serializable接口对对象序列化的支持是内建于核心API的,但是java.io.Externalizable的所有实现者必须提供读取和写出的实现。Java已经具有了对序列化的内建支持,也就是说只要制作自己的类java.io.Serializable,Java就会试图存储和重组你的对象。如果使用外部化,你就可以选择完全由自己完成读取和写出的工作,Java对外部化所提供的唯一支持是接口:voidreadExternal(ObjectInput in)

void writeExternal(ObjectOutput out)现在如何实现readExternal()和writeExternal()就完全看你自己了。序列化会自动存储必要的信息,用以反序列化被存储的实例,而外部化则只保存被存储的类的标识。当你通过java.io.Serializable接口序列化一个对象时,有关类的信息,比如它的属性和这些属性的类型,都与实例数据一起被存储起来。在选择走Externalizable这条路时,Java只存储有关每个被存储类型的非常少的信息。每个接口的优点和缺点Serializable接口· 优点:内建支持· 优点:易于实现· 缺点:占用空间过大· 缺点:由于额外的开销导致速度变比较慢Externalizable接口· 优点:开销较少(程序员决定存储什么)· 优点:可能的速度提升· 缺点:虚拟机不提供任何帮助,也就是说所有的工作都落到了开发人员的肩上。在两者之间如何选择要根据应用程序的需求来定。Serializable通常是最简单的解决方案,但是它可能会导致出现不可接受的性能问题或空间问题;在出现这些问题的情况下,Externalizable可能是一条可行之路。要记住一点,如果一个类是可外部化的(Externalizable),那么Externalizable方法将被用于序列化类的实例,即使这个类型提供了Serializable方法:private void writeObject()

private void readObject()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值