Serializable的在与不在

写代码这么多年,或多或少的一定见过serializable/serialUID很多次,但是从来没看到再哪调用的它.真的是个很神奇的存在.

下面就来说说serialize的神奇存在:

1.首先我们来看下serializable接口源码:

public interface Serializable {

}

是的,没看错.什么也没有.那他到底有什么用呢,又用在何处呢?

/**

* Serializability of a class is enabled by the class implementing the

* java.io.Serializable interface. Classes that do not implement this

* interface will not have any of their state serialized or

* deserialized.

...

*/

这是serializable接口的注释,大致意思是说,只有实现了serializable接口,才具有序列化和反序列化的能力.

那么什么是序列化和反序列化呢,

我们都知道字节传输有两种形式:

1)二进制;

2)文本

这就涉及到一个重要的概念:网络协议.

网络协议最常用的就是文本协议和二进制协议.

比方说,我们常用的json就是文本协议,01序列字节流就是二进制协议.

我们通常在网络请求和数据存储在文件或者磁盘上时,都是由二进制流进行的,而二进制数据的传输和存储需要支持序列化才能执行.

所以,serializable不起眼却有大用处。

你可能感兴趣的:(Serializable的在与不在)