问题标签 [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 - Cannot refer to a class object A from the same class?
Car a gives me cannot find symbol. I am trying to write a class that uses a copy constructor and a clone method, but came across an error I can't solve. I've been scratching my head for 30 minutes.
java - Java clone() 方法是实现多态克隆的唯一方法吗?
我需要为我的班级配备多态克隆(深拷贝),即我需要这样的东西才能工作:
whereoriginal.clone()
可以被任何机制替代以创建深层副本,并且实际类型copy
应为SubType
,因为original
也是SubType
.
clone()
方法和接口是Cloneable
实现这一目标的唯一方法吗?工厂方法和复制构造函数不能被使用,因为实际的类只在运行时才知道,对吧?除了那些序列化反序列化方法以及恕我直言的Java深度克隆库比该方法更糟糕的黑魔法之外,还有其他建议的clone()
方法吗?
谢谢,彼得
java - 为什么对象不应该是可克隆的?
我阅读了很多关于 Object 和 Cloneable Interface 的 clone() 方法的线程,但我找不到我的问题的合法答案。长话短说:
我发现 Object 有一个方法 clone() 可以“神奇地”克隆你的对象。但是你不能在不实现 Cloneable Interface 的情况下使用该方法,因为该接口允许 Object 使用 clone() 方法。那么他们为什么这样做呢?为什么不应该从一开始就可以克隆每个对象?
java - Java 克隆的优点
我在网上寻找有关 java 克隆的教程,但只发现了 clone() 的缺点,而没有发现优点。我想知道使用 Java clone() 的一些优点。
java - 是否需要使用 Clonable?
我到处读到,如果我在没有实现 Cloneable 接口的情况下调用 clone(),我将得到 CloneNotSupportedException。如果我在一个没有实现 Cloneable 的类中实现 clone 方法,我仍然可以调用 clone() 没有异常。我的意思是实现 Cloneable 没有任何区别。请详细说明........
java - 让我的班级实现 Cloneable 有什么意义?
我遇到了一些实现Clonable
的类代码,文档指出:
一个类实现了 Cloneable 接口,以向 Object.clone() 方法指示该方法制作该类实例的逐个字段副本是合法的。在未实现 Cloneable 接口的实例上调用 Object 的 clone 方法会导致抛出异常 CloneNotSupportedException。按照惯例,实现此接口的类应使用公共方法覆盖 Object.clone(受保护的)。有关覆盖此方法的详细信息,请参阅 Object.clone()。请注意,此接口不包含 clone 方法。因此,不可能仅凭借实现该接口的事实来克隆对象。即使以反射方式调用 clone 方法,也不能保证它会成功。
我无法理解实现这个类的意义,正如文档中所说,该.clone
方法没有在接口中实现,我必须实现它。那么为什么要使用这个类呢?为什么我不在我的copyClass
类中编写一个方法来复制对象而不实现这个类?
java - Java 中的原型模式 - clone() 方法
所以,我一直在阅读设计模式和原型模式让我感到困惑。我相信使用它的要点之一是避免使用new运算符。然后我看这个例子:
http://sourcemaking.com/design_patterns/prototype/java/1
首先,他们的 Prototype 想法实现了一个 clone() 方法,这很奇怪。维基百科还说我需要一个纯虚拟方法克隆来由子类实现(为什么?)。Java 不是已经提供了这样的方法,完全按照我们的需要(即创建对象的副本而不是从头开始实例化它)吗?其次,clone 方法调用操作符new!这个例子肯定是错的吗?(在那种情况下,我应该在其他地方学习设计模式,嗯?)。有人可以判断这个更正是否正确吗?:
任何澄清表示赞赏。
c# - 为什么我不能正确输入 Clone()?
像任何其他 C# 程序员一样,我面临如何最好地表达对象复制的问题。具体来说,我有一个类层次结构,其中所有对象都必须是可复制的。
已经讨论过是使用复制构造函数(C# 不提供)还是Clone()
方法;另一种选择是使用获取对象并生成副本的方法。所有选项都有优点和缺点,但所有选项的一个共同问题是打字问题。
我想以任何可能的方式声明,在我的类层次结构中的所有对象上都存在一个复制操作,该操作总是产生与原始对象相同类型的对象- 这样任何违反此行为的行为都会在编译时报告时间。
这三个选项都不允许我这样做,即使使用泛型也是如此。显然,C#根本不允许我这样做;Java 和我知道的其他一些语言也没有。
为什么不?类型系统中的这样一个特性是否太难实现?它会导致不一致吗?我希望准确键入的复制操作是否被视为极端情况?有没有其他方法可以实现我错过的?
PS:请注意,这个问题不是关于浅拷贝和深拷贝的区别,如何拷贝,或者根本不做。
java - 为什么 Object clone() 方法仅适用于实现 Cloneable 接口的类?
我知道这clone()
是一个受保护的方法,但“受保护”意味着它可以被特定类的所有子类访问。
任何 Java 类都是 的子类Object
,那么这里的受保护方法的原因是什么?
为什么我们clone()
只能调用实现Cloneable
接口的类?clone()
我不明白它是如何与inObject
被声明为受保护的事实联系起来的。
java - 如果存储在列表中的对象不可克隆,如何创建链表的深层副本?
我有一个链表,其中包含不可克隆的对象。深度复制列表的最有效方法是什么?
我尝试过的是:
它似乎工作正常,但我只是想知道它是否实际上是在深度复制整个列表以及是否有更好的方法来做到这一点
*我不确定要发布什么代码,但基本上我有一个类,以及该类的许多实例作为另一个类中的列表