![](https://csdnimg.cn/release/download_crawler_static/87395789/bg6.jpg)
在 Java 运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的
信息以及动态调用对象的方法的功能来自于反射机制。
18、什么是 java 序列化?什么情况下需要序列化?
序列化就是一种用来处理对象流的机制。将对象的内容流化,将流化后的对象传输于网络之
间。
序列化是通过实现 serializable 接口,该接口没有需要实现的方法,implement Serializable
只是为了标注该对象是可被序列化的,使用一个输出流(FileOutputStream)来构造一个
ObjectOutputStream 对 象 , 接 着 使 用 ObjectOutputStream 对 象 的 writeObejct ( Object
object)方法就可以将参数的 obj 对象到磁盘,需要恢复的时候使用输入流。
序列化是将对象转换为容易传输的格式的过程。
例如,可以序列化一个对象,然后通过 HTTP 通过 Internet 在客户端和服务器之间传输该对
象。在另一端,反序列化将从流中心构造成对象。
一般程序在运行时,产生对象,这些对象随着程序的停止而消失,但我们想将某些对象保存
下来,这时,我们就可以通过序列化将对象保存在磁盘,需要使用的时候通过反序列化获取
到。
对象序列化的最主要目的就是传递和保存对象,保存对象的完整性和可传递性。
譬如通过网络传输或者把一个对象保存成本地一个文件的时候,需要使用序列化。
19、为什么要使用克隆?如何实现对象克隆?深拷贝和浅拷贝区别是什么?
(1)什么要使用克隆?
想对一个对象进行复制,又想保留原有的对象进行接下来的操作,这个时候就需要克隆了。
(2)如何实现对象克隆?
实现 Cloneable 接口,重写 clone 方法;
实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深克隆。
BeanUtils,apache 和 Spring 都提供了 bean 工具,只是这都是浅克隆。
(3)深拷贝和浅拷贝区别是什么?
浅拷贝:仅仅克隆基本类型变量,不克隆引用类型变量;
深克隆:既克隆基本类型变量,又克隆引用类型变量;
(4)代码实例