Java不使用clone()和序列化实现深拷贝

wzm0706 2018-09-06 09:13:33
加精
最近面试,遇到到这个问题,回来想了很久也没找到方法,如题。求解答~
...全文
5325 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
简单的说,面试你的人不想要你
rumlee 2019-01-01
  • 打赏
  • 举报
回复
用gson吧,使用简单,性能也挺好。
鸣鸣Amadues 2018-12-30
  • 打赏
  • 举报
回复
这种东西没什么研究的,实际碰到项目就直接调用obj1 = clone(obj2)这样就可以了。 这种功能应该是语言内置的,而不应该由使用者去考虑怎么实现。
是谁?? 2018-12-28
  • 打赏
  • 举报
回复
小白,学习路过。
RUA好多鱼~ 2018-12-12
  • 打赏
  • 举报
回复
那就自己用反射获取类的属性方法组合成对象呗,或许还会用到递归的方式
zhanghao0095 2018-12-09
  • 打赏
  • 举报
回复
向大神们学习
鬼善 2018-10-13
  • 打赏
  • 举报
回复
面试官可能也没啥问的,随便说说就行
liulilittle 2018-09-27
  • 打赏
  • 举报
回复
这种面试官也不会问的太底层 大多情况下他们不懂的东西是不是会问的 当然也不用过渡高估面试官的水平 毕竟基本都只是会用 Java, 不等于懂 Java 至于深入的理解一门语言的人至少都是小牛魔王层次的(即>=T5【中低级工程师】)一般人是很难达到的。 另外,只要不是搞过过程虚拟机虚拟机这一层的都没什么资格“高言阔论”虚拟机的内部(或者说是 JVM)这是极其不负责任的。 -------------- 所以综合这些情况,大致就能推断了面试官想要问的东西是属于 Java lang 本身的语言特性(当然这句话不应该这么说,应该说 是 Jvm 的特性,但很多人总是容易将这些东西混淆) 它要求你不利用“原型”也不可“序列化”但是并没有说你不可自行实现,人们总是讲面试官提出的问题想的过于复杂化,当然 事实情况下不是这样的,大多情况下好的面试官都希望听到 你对某件事物的看法与理解(当然只是一直问你XX技术,或者说某 种实现,比如让你手写“红黑树”、“234阶树”笑~~~少年快点离开,你不慎误入传销窝点了) 你看你会有很多的回答办法, 比如说告诉它: 1、大多数“序列化”工具是依托反射完成的,利用“反射”我们可以快速的解决一些繁琐的问题,同时可以更好的进行解耦。 另外利用它”实现深拷贝“的话,好处显然而已意见,我们可以具有一个更加通用且依赖聚合的有效代码,当然这么做也 需要付出一定的代价,例如:反射的性能开销的问题(比如说直接调用与反射调用之间的效率差大概在10倍左右,不同的 主机可能表现情况不同,但是大致如此)... 2、分享你是怎么看待“原型模式“的,同时它的一些弊端与缺陷,一个好的面试官会提出它的看法。 面试不是战场,没什么好禁张的,该怎么样就怎么样没什么好好奇也没什么好无语的,面试失败就当是同行之间的交流也是 可行的,一个好的态度是必须的~~~笑 现场编写代码是最次的选择,笑~~~面试官可不是面试的时候现场来看你写代码的。另外一点不同公司的面试官可能有些不 同有些人面试官不喜欢听别人长篇大论(这类一帮都是些搞了五六年的【解除计算机时间不长】),有些面试官却可以(这 类是很多是搞了很久很久的编程【从很小的时候就已经开始搞计算机,当然只要过程中不走歪都是一帮牛魔王】,哪怕你面 试失败也能了解到很多东西~~~哦~~笑;它们听你的说的东西一是给自己提供灵感,另外也想看你这个人到底怎么样,至 于你是不是会那些技术已经不是很重要了,它们在乎的不是这些东西~~~) 注意按人下菜。
艾德 2018-09-19
  • 打赏
  • 举报
回复
变成json或xml再变回来? 本质和序列化是一样的,各大json/xml包都提供了这个功能
真情鸟 2018-09-16
  • 打赏
  • 举报
回复
不用clone ,那就考虑反射吧。
大隐藏于寺 2018-09-15
  • 打赏
  • 举报
回复
好吧,没注意到楼主说的除了序列化...
大隐藏于寺 2018-09-15
  • 打赏
  • 举报
回复
除了clone(),还可以使用序列化实现深度拷贝.链接是例子https://blog.csdn.net/sollian/article/details/51719524
xian_s 2018-09-14
  • 打赏
  • 举报
回复
类中提供个构造器或者静态工厂方法,接收参数为类本身,返回值为新new的一个对象,来自effective java第11条
liu3341 2018-09-14
  • 打赏
  • 举报
回复
那就直接new吧
riorichard2012 2018-09-14
  • 打赏
  • 举报
回复
支持下,mark
ForestDB 2018-09-13
  • 打赏
  • 举报
回复
难道是想考察反射?
ljheee 2018-09-12
  • 打赏
  • 举报
回复
那就直接new吧
  • 打赏
  • 举报
回复
不用clone ,那就考虑反射吧。
  • 打赏
  • 举报
回复
引用 2 楼 verejava 的回复:
设计模式 之 原型模式 深克隆

http://www.verejava.com/?id=17175123436746


这种也是继承了clone方法啊

向往海的风 2018-09-07
  • 打赏
  • 举报
回复
没人回答吗?我来说说我的理解吧,不用clone也不用序列化的话对简单的pojo类还好办,用反射把一个对象的所有属性值copy到另一个对象就可以了。

但是如果不是标准pojo,比如有些私有属性,且没有getset方法的属性,但这个属性又至关重要,那可以为这个类新增一个类似clone的方法,在这个方法内复制属性值。
加载更多回复(2)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧