cloneable相关内容
众所周知,Java中的Cloneable接口被破坏了.造成这种情况的原因有很多,我就不说了;其他人已经做到了.这也是 Java 架构师自己的立场. 因此,我的问题是:为什么还没有被弃用?如果核心 Java 团队已经确定它已损坏,那么他们也必须考虑过弃用.他们反对这样做的原因是什么(在 Java 8 中它是仍然没有被弃用)? 解决方案 有一个bug 1997 年提交给 Java Bug
..
问题: 打包GoodQuestions;公共类 MyClass {MyClass() 抛出 CloneNotSupportedException {尝试 {抛出新的 CloneNotSupportedException();} 捕获(异常 e){e.printStackTrace();}}公共静态无效主(字符串 [] args){尝试 {MyClass obj = new MyClass();M
..
以下编译正常: Object o = new Object();System.out.println(o instanceof Cloneable); 但这不会: String s = new String();System.out.println(s instanceof Cloneable); 抛出编译器错误. 有什么问题? 解决方案 您的问题的一个更明显的化身如下:
..
我想知道以下内容: Cloneable 意味着我们可以拥有对象的克隆或副本,通过实现 Cloneable 接口.有什么优点和这样做的坏处? 如果对象是一个对象,递归克隆是如何发生的?复合对象? 解决方案 关于 Cloneable 你应该知道的第一件事是 - 不要使用它. 使用Cloneable正确实现克隆是非常困难的,而且付出的努力是不值得的. 而不是使用其他一些选项,
..
我需要在没有超类的对象之一中实现深度克隆. 处理超类(即Object)抛出的已检查CloneNotSupportedException的最佳方法是什么? 一位同事建议我按以下方式处理: @Override公共 MyObject 克隆(){我的对象 foo;尝试{foo = (MyObject) super.clone();}catch (CloneNotSupportedExcept
..
我知道 clone()是一种受保护的方法,但是“受保护"意味着特定类的所有子类都可以访问它. 任何Java类都是 Object 的子类,那么这里使用受保护方法的原因是什么? 为什么我们只能在实现 Cloneable 接口的类上调用 clone()?我不明白它如何与以下事实联系在一起:在 Object 中的 clone()被声明为受保护的. 解决方案 对象的clone()方法非常
..
我想知道以下内容: Cloneable 意味着我们可以通过以下方式获得对象的克隆或副本:实现 Cloneable 接口.有什么优点和这样做的缺点? 如果对象是一个对象,那么如何进行递归克隆复合对象? 解决方案 关于 Cloneable 的第一件事是-不要使用它. 使用 Cloneable 正确执行克隆非常困难,而付出的努力是不值得的. 代替使用其他一些选项,例如apac
..
我的问题是关于如何实现经典的 ICloneable 接口,以便在将来的程序员不关注时不会导致意外的对象切片.这是我想检测的一种编程错误的示例(最好是在编译时): #includeICloneable类{上市:虚拟ICloneable * clone()const = 0;};A类:公共可克隆{上市:一种() {}A(const A& rhs){}虚拟ICloneable *
..
我有一个通用类,需要能够克隆参数类型的对象.下面是一个非常简单的示例.编译器声称看不见对象类型的clone(). public class GenericTest { T obj; GenericTest(T t) { obj = t; } T getClone()
..
之所以出现此问题,是因为我的项目中遇到了技术难题。 问题: 我需要克隆一个Class对象,该对象从第三方库类(我们无权修改其内容)扩展属性(继承) 下面的示例让我解释一下: 父级: 公共类UnChangeableBaseClass { //字段和方法 } 子类: class DerivedLocalClass扩展UnChangea
..
java.lang.Cloneable 接口的Java规范将其自身定义为表示扩展该对象的任何对象也已实现了 clone() 方法在 java.lang.Object 中处于休眠状态。具体来说,它表示: 一个类实现了 Cloneable 接口以指示 java.lang.Object#clone()方法,认为该方法为该类的实例进行逐域复制是合法的。 对我来说,这意味着应该假设每个扩展 Cl
..
Doug Lea在错误报告中写道(指版本的JDK 5.0): 同时声明 $ c> Cloneable ,它无法定义公共克隆方法。 但最终最终导致 CopyOnWriteArraySet 根本没有实现 Cloneable 接口! (在Java SE 6、7和8中是这样。) CopyOnWriteArraySet 与 CopyOnWriteArrayList 关于克隆?有一个合理的原
..
我写了一个程序,该程序具有特征 Animal 和实现该特征的结构 Dog 。它也有一个结构 AnimalHouse ,将动物存储为特征对象 Box 。 性状动物{ fn talk(&self; self ;; } struct Dog { name:String, } impl Dog { fn new(name:& ; str)-> Dog {
..
我正在尝试在 DoubleLinkedList 上实现 clone()方法。现在,问题是,与仅创建一个新的 DoubleLinkedList 并用我当前的DoubleLinkedList的所有元素填充一样,通过“约定”实现它要麻烦得多。 / p> 这样做时有什么不便之处吗? 这是我目前的做法: @覆盖 public DoubleLinkedList clone(){
..
我正在维护一个较旧的Java代码库(jvm 1.4),该库似乎使用克隆作为对象实例化的替代方法,我猜测这是一种性能优化.这是一个人为的例子: public class Foo { private SomeObject obj; // SomeObject implements Cloneable public Foo() { obj = new SomeObject();
..
我正在尝试使用CRTP实现一个Clonable类.但是,我需要抽象类具有纯虚拟克隆方法,并由子类覆盖.为此,我需要clone函数返回协变返回类型.我在下面编写了这段代码,编译器向我大喊这个错误: main.cpp:12:5: error: return type of virtual function 'clone' is not covariant with the return type
..
Java中的 Cloneable 本质上已被破坏。具体来说,我对界面的最大问题是它需要一种不定义方法本身的方法行为。因此,如果遍历 Cloneable 列表,则必须使用反射来访问其定义的行为。但是,在Java 8中,我们现在有默认方法,现在我问为什么 Cloneable clone()方法c $ c>。 我理解为什么接口不能默认使用Object方法,但是,这是一个明确的设计决策,因此可以进
..
问题: 包GoodQuestions; public class MyClass { MyClass()抛出CloneNotSupportedException { try { throw new CloneNotSupportedException(); } catch(例外e){ e.printStackTrace(); } } public static vo
..
我有一些使用Object.clone执行深层复制的代码,但我正在尝试使用更“可接受”的复制构造函数来重写它。下面是我正在尝试做的两个简单示例,第一个使用克隆,第二个使用复制构造函数。 使用克隆的深层复制 import java.util。*; 抽象类Person实现Cloneable { String name; public Object clone()抛出CloneN
..
如果我有: class foo实现Cloneable 然后执行: bar = new foo(); bar.clone(); 我得到一份浅层副本,无需编写任何 bar.clone() 我实现接口时通常需要做的代码。 我的理解是接口的函数必须由类填写实现它, Object.clone()没有实现(根据文档,“类Object本身不实现
..