首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >克隆和序列化与使用“新”和反射有什么不同?

克隆和序列化与使用“新”和反射有什么不同?
EN

Stack Overflow用户
提问于 2012-05-10 19:09:11
回答 2查看 1.8K关注 0票数 2

当我读到“我们可以用多少种方式在java中创建一个对象”时。

我找到了四种方法:

使用新运算符创建对象的

  1. 克隆
  2. 序列化
  3. 反射。

有了新的和反思的,我对这两种方法没有意见。

我的问题是:

为什么人们认为克隆和序列化是创建对象的不同方式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-10 19:14:35

当您克隆一个对象时,这意味着您处理的是内存中与原始对象不同的部分。是的,它们可能具有相同的属性,但它们是两个不同的指针,具有两个不同的内存块。

当您取消对象序列化时,就会存在以前不存在的对象。即使您序列化然后立即取消序列化,它也将独立于原始对象存在。

票数 1
EN

Stack Overflow用户

发布于 2012-05-10 19:17:14

这里非常重要的一点是,在对象反序列化过程中存在,没有构造函数 --这就是为什么它是创建对象的独特方法的原因。克隆也是如此-- Object.clone通过JVM魔术创建了一个新对象,同样不涉及任何构造函数。事实上,这两种方法与new和反射有很大的区别,因为反射只是调用普通对象实例化的一种稍微不同的方式,涉及特定的构造函数。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10540647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档