-
哆啦的时光机
LZ采纳的方案是有明显局限的:被克隆的对象必须实现Serializable接口。应付面试可能可以,但并不完美,更加完整的解决方案是自己写程序序列化对象。可以参考Hessian序列化过程。也可以参考各种Json框架,道理是一样的。
-
千万里不及你
你看下API的实现就明白了,原理就是通过字节码进行拷贝,说到底还是JAVA传参的影响,传递的实际是对象(非基本类型)的句柄。说不能用API,没说不能和API实现的原理一样啊
-
慕盖茨4494581
浅克隆[code="java"]public Object clone(){return super.clone();}[/code]深克隆[code="java"]public Object clone(){Employee cloned = (Employee)super.clone();cloned.dep = (Department)this.dep.clone();//等等子对象return cloned;}[/code]流复制(需序列化)[code="java"]public Object deepClone(){ByteArrayOutoutStream bo=new ByteArrayOutputStream();ObjectOutputStream oo=new ObjectOutputStream(bo);oo.writeObject(this);ByteArrayInputStream bi=new ByteArrayInputStream(bo.toByteArray());ObjectInputStream oi=new ObjectInputStream(bi);return(oi.readObject());}