java面试宝典(28)

105 阅读1分钟

学习java.java企业级实战项目

  1. 为什么要使用克隆? 用一个对象得到了大量的数据,需要对此处理,但同时又想保存原来的数据,就需要对原数据进行克隆操作。

  2. 如何实现对象克隆? 有两种方式:

1). 实现Cloneable接口,并重写其中的clone()方法,在里面定义克隆动作;

2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆

请注意,基于序列化和反序列化实现的克隆不仅是深度克隆,更重要的是通过泛型限定,把对象里包含的子对象也克隆出来,同时检查克隆出来的对象是否支持序列化,而这种检查是编译器完成的,不是在运行时抛出异常,这种是方案明显优于使用Object类的clone方法克隆对象,毕竟让问题在编译的时候暴露出来总是好过把问题留到运行时。

  1. 深拷贝和浅拷贝区别是什么? 浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝,浅拷贝可能会引发潜在的数据修改问题 深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)