猿问

IBM中国研发中心面试题,如何用Java写一个程序达到对象深浅克隆的效果?不能用API

  • IBM中国研发中心面试题,如何用Java写一个程序达到对象深浅克隆的效果?不能用API。来吧,大家发表意见,全分奉上。


森栏
浏览 477回答 4
4回答

哆啦的时光机

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());}
随时随地看视频慕课网APP

相关分类

Java
我要回答