一. Cloneable + clone方法实现拷贝
示例代码如下:
static class Account implements Cloneable{ public int id; public String name; @Override protected Account clone() { try { return (Account) super.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } static class User implements Cloneable{ public String name; public Account account; @Override protected User clone() { User user; try { user = (User)super.clone(); user.account = account.clone();//引用类型,要显示拷贝,否则就是浅拷贝了; return user; } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
二.实现Serializable接口
java通过对象的序列化和反序列化实现克隆,可以实现真正的深克隆
三.利用第三方工具
利用BeanUtils,apache和spring都提供了这个bean工具。只是他也是浅克隆