克隆是什么

发布时间:2026/7/28 18:47:12
克隆是什么 什么是对象克隆一个业务逻辑需要一个新的对象但是类型和值都是之前的也就是说新状态和之前完全一样。使用new和赋值语句或者set注入都是可以的但是这会花费大量开销去做效率低并且还会产生冗余代码。恰好java语言本身契合了原型设计模式给我们提供了一个clone方法在Object对象中只要需要克隆的对象实现Cloneable接口那么我们只要简单的调用一下该方法就可以获得表面完全不同的对象。public class User implements Cloneable{ Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone(); } } ...... User u new User(); User uCopy u.clone(); //显然u和uCopy已经是两个不同的对象了 System.out.println(u uCopy);//false如何实现对象克隆上文也是提到克隆对象基本只要两步1.实现Cloneable接口2.实现clone()方法并调用父类clone()需要注意Object的clone()方法是在java平台层实现的native方法具有开销小速度快的特点。而且原始的Object方法是被protected修饰的在这里需要修改为public如果不这么做浅克隆时没有问题深克隆就会遇到权限不够的问题。java继承还有个原则就是子类覆写父类方法访问修饰符权限不能低于父类。深克隆与浅克隆的区别浅拷贝仅仅克隆基本类型变量而不克隆引用类型的变量深克隆既克隆基本类型变量也克隆引用类型变量