二进制
其实序列化有很多方法,二进制序列化只是其中的一种,就是将类中的变量以二进制的形式存储成为一个可读写的文件。
究其本源就是将类中的成员变量序列化成二进制数据,许多变量都可以进行二进制序列化,比如int``float``bool
等等,就是将int
转化成为16进制的int
,就是将float
转化成为16进制的flaot
,就是将bool
转化成为16进制的bool
。
如果有的类不可以序列化,那么可能是没有实现自己的序列化方法。
这里就不讲解如何序列化一个类了,简单的来说就是实现一个Serilized
方法,这个方法里面实现了每个值类型如何转化成为16进制数据,在这个方法里面,可以通过反射得到一个类所有的成员变量。然后将其成员变量按顺序转化为16进制数据,并且存储为二进制文件。
既然反射可以得到私有变量为什么二进制序列化时默认不序列化私有成员呢❓
那么有的类不能序列化就可以讲得通了,它里面数据成员无法转化成为二进制数据。
Json & XML
其实JSON就是JS的序列化对象,并且除去双引号,JS的对象与JSON长得一模一样。这里就不详细展开了。
对应的值是是成员变量名,对应的值是成员变量的值。