java中什么类需要序列化?
为了读写方便,比如把一个对象写入文本中,必须进行序列化。
java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。
Java接口为什么不支持序列化?系统交互中,为什么不可以通过接口传输数据?
这是一个非常好的问题,Java序列化是Java语言中一个非常重要的内容。
很多Java初学者都搞不清楚Java序列化的作用和意义,要了解Java为什么不序列化接口,首先要明白一件事情,那就是为什么要序列化?序列化的目的是完成对象的存储和传递,传递往往是对象序列化最常见的目的。
下面,我们再看一下Java接口的概念。Java中的接口还有一个名字,那就是“全抽象”,所以Java中的接口本身并不存在序列化的基础,因为接口本身是抽象的。在系统的交互中,接口恰恰起到了关键的作用,那就是为传递定义“标准”。
描述Java序列化一个比较常见的方式是结合RMI(一个比较传统的Java技术,或者叫老技术)来完成,因为RMI既能够描述序列化的过程,也能够描述数据传递的过程,同时凸显了接口的重要性,下面我们看一个例子:
首先定义一个实体类Student,按照Java序列化的要求,Student需要实现“声明式接口”Serializable,之所为称之为“声明式接口”,是因为此接口中没有定义任何方法。为了演示的清晰性,类中并没有定义太多的属性和方法。接着就需要定义远程接口了:
注意远程接口的定义扩展了Remote接口,这里面需要注意的是,java中接口可以同时扩展多个接口,也就是说定义接口时,extends后面可以有多个接口。接着定义服务类:
服务类完成了远程方法的实现,并把服务注册到了目录服务器上,这样就可以接收调用请求了。下面,看一下客户端的定义:
通过这个例子比较完整的呈现了Java序列化在网络交互过程中的作用,具体的writeObject和readObject的过程是被隐含实现的。
我使用Java语言多年,我会陆续在头条写一些关于软件开发方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有Java或其他编程语言方面的问题,也可以咨询我。
谢谢!
什么需要序列化?就好像安卓,你换个页面,上一个页面当然要保存数据。这时候需要序列化。你的变量都在内存中,为什么还需要序列化?传输数据都和具体包实现的功能有关,网络传输数据用io,进程之间数据传输用进程的相关包,和接口不接口有什么关系?你完全可以做一个类用来数据传输,然后定义一个接口,让这个类实现这个接口,接口里定义类中你需要传输数据的方法,这样你就可以通过接口的实例和方法来传输数据。