Java:深度克隆/复制实例的推荐解决方案我想知道是否有一种在java中进行深度克隆/复制实例的推荐方法。我有三个解决方案,但我可能会错过一些,我想听听你的意见。编辑:包括Bohzo提议和精炼问题:它更多的是关于深度克隆而不是浅克隆。自己动手:在属性之后用手工属性对克隆进行编码,并检查是否也克隆了可变实例。专业:-对将要执行的工作的控制-快速处决缺点:-编写和维护繁琐-易出错(复制/粘贴失败,丢失属性,可重分配的可变属性)使用反射:使用您自己的反射工具或外部助手(如JakartaCommon-bean),很容易编写一个泛型复制方法,它将在一行中完成任务。专业:-易于书写-无维护缺点:-减少对发生情况的控制-如果反射工具也不克隆子对象,则容易出现易变对象的错误-执行较慢使用克隆框架:使用一个为您服务的框架,比如:Common-lang序列化UtilsJava深度克隆库杜泽尔克里奥专业:-与反思相同-更多地控制将被克隆的东西。缺点:-每个可变实例都是完全克隆的,即使在层次结构的末尾也是如此。-执行起来可能会很慢使用字节码工具在运行时编写克隆javassit, BCEL或Cglib可能被用来像一只手一样快速地生成一个专用的克隆人。有人知道用这些工具中的一个实现这个目的库吗?我错过了什么?你推荐哪一个?谢谢。
3 回答

Cats萌萌
TA贡献1805条经验 获得超9个赞
Kryo kryo = new Kryo();SomeClass someObject = ...SomeClass copy1 = kryo.copy(someObject);SomeClass copy2 = kryo.copyShallow(someObject);
添加回答
举报
0/150
提交
取消