问题标签 [cloneable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 克隆是否比构造函数/工厂方法提供了性能改进?
我正在维护一个较旧的 Java 代码库(jvm 1.4),它似乎使用克隆作为对象实例化的替代方法,我猜它是一种性能优化。这是一个人为的例子:
尽管有关于过早优化的常见警告,但这实际上是在某些时候推荐的习语吗?
c# - 为什么要在 C# 中实现 ICloneable?
你能解释一下为什么我应该继承ICloneable
并实现这个Clone()
方法吗?
如果我想做一个深拷贝,我不能只实现我的方法吗?比方说MyClone()
?
我为什么要继承 from ICloneable
?有什么优势?只是让代码“更具可读性”吗?
java - Java:Cloneable 接口的基本原理
为什么接口中没有.clone()
指定方法java.lang.Cloneable
?
java - java中可克隆接口和object.clone()的混淆
如果我有:
然后做:
我得到了一个浅拷贝,而无需bar.clone()
像我通常在实现接口时那样编写任何代码。
我的理解是接口的功能必须由实现它的类填充,并且Object.clone()
没有实现(根据文档,“类 Object 本身并不实现接口 Cloneable”)
那么我的浅克隆是从哪里来的呢?bar.clone()
如果Object.clone()
没有实现,实现的代码在哪里?我很困惑。
java - Java 对象何时可序列化但不可克隆?
如果 Java 类实现了Serializable
接口但没有公共clone()
方法,通常可以像这样创建深拷贝:
我经常遇到像这样的第三方库类,并诉诸上述黑客攻击。我什至ObjectOutputStream
有时会扩展以使副本更浅。除了效率低下(编码/解码速度慢并且临时序列化图会消耗大量内存)之外,它从未引起严重问题。)
如果使用这种技术不安全,那么类可能不应该被声明Serializable
。
所以我想知道的是,如果你的类是Serializable
,什么可能会阻止你定义一个公共clone()
方法(使用Cloneable
接口或复制构造函数?)
相关:在 Java 中复制对象
java - 如何正确覆盖克隆方法?
我需要在我的一个没有超类的对象中实现深度克隆。
CloneNotSupportedException
处理超类(即)抛出的检查的最佳方法是Object
什么?
一位同事建议我按以下方式处理:
这对我来说似乎是一个很好的解决方案,但我想把它扔给 StackOverflow 社区,看看是否还有其他可以包含的见解。谢谢!
java - instanceof - 不兼容的条件操作数类型
以下编译良好:
但这不会:
抛出编译器错误。
问题是什么?
java - Object[] 如何可克隆
这给出了真实的 o/p。我不明白为什么?
java - 在 Java 中实现可克隆
在哪些情况下我应该使用这种方式:
在哪些情况下我应该使用这种方式:
如果x
是最终的并且我想使用第一种方式,我该怎么办?
关于第一种方式,我的理解是这样的:我们克隆超类并向上转换它,导致一些成员未初始化。在此之后初始化这些成员。我的理解正确吗?
谢谢你。
java - 关于Cloneable接口和应该抛出的异常的问题
Java 文档说:
一个类实现了 Cloneable 接口,以向 Object.clone() 方法指示该方法可以合法地对该类的实例进行逐个字段的复制。
在未实现 Cloneable 接口的实例上调用 Object 的 clone 方法会导致抛出异常 CloneNotSupportedException。
按照惯例,实现此接口的类应使用公共方法覆盖 Object.clone(受保护的)。有关覆盖此方法的详细信息,请参阅 Object.clone()。
请注意,此接口不包含 clone 方法。因此,不可能仅凭借实现该接口的事实来克隆对象。即使以反射方式调用 clone 方法,也不能保证它会成功。
我有这UserProfile
堂课:
为了测试 porpuses,我这样做main()
:
到目前为止,编译/运行没有问题。现在,根据我对文档的理解,implements Cloneable
从UserProfile
类中删除应该会在调用中引发异常up1.clone()
,但事实并非如此。
我在这里读到 Cloneable 接口坏了,但我真的不知道这意味着什么。我错过了什么吗?