当前位置: 首页 > 知识库问答 >
问题:

为什么克隆没有被否决?

苍兴怀
2023-03-14

因此,我的问题是:为什么还没有被否决?如果核心Java团队已经决定它是坏的,那么他们一定也考虑过弃用。他们反对这样做的理由是什么(在Java8中,它仍然没有被反对)?

共有1个答案

温凯
2023-03-14

1997年提交给Java bug数据库的一个bug是关于将clone()方法html" target="_blank">添加到cloneable中,因此它将不再是无用的。它以“不会修复”的决议结束,理由如下:

Sun的技术审查委员会(TRC)详细考虑了这个问题,并建议除了改进当前可克隆接口的文档之外不要采取任何行动。以下是建议的全文:

现有的Java对象克隆API是有问题的。在java.lang.Object上有一个受保护的“克隆”方法,并且有一个接口java.lang.Cloneable。其目的是,如果一个类希望允许其他人克隆它,那么它应该支持可克隆接口,并用一个公共克隆方法重写默认的受保护克隆方法。不幸的是,由于时间迷雾中容易丢失的原因,Cloneable接口没有定义克隆方法。

试图克隆不实现可克隆接口的实例将导致引发异常CloneNotSupportedException。

接口Cloneable不声明任何方法。

从Java1.4(2002年2月发布)到当前版本(Java8),它看起来如下所示:

 类似资料:
  • 本文向大家介绍为什么要使用克隆?相关面试题,主要包含被问及为什么要使用克隆?时的应答技巧和注意事项,需要的朋友参考一下 克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。

  • 您会注意到,我已经在目录本身的克隆方法中克隆了一个product类对象,但是您可能会注意到,主类已经测试了它,并且它工作了,所以product类的克隆是成功的。 你能看出问题所在吗?我知道也会有很多小错误的编码礼仪和可能更容易的方法做事情,但我只是一个初学者。我必须实现deep copy,而且它必须有意义,所以克隆product类是不够的,我想创建一个方法来克隆整个目录,所以如果要用一台新的机器替

  • 我对在我想要克隆对象的类中重写克隆方法感到困惑。 因为Java中的每个类都是从Object扩展而来的,所以它应该有clone方法,但是我们仍然被迫重写clone。为什么要求? 另外,我在一些地方阅读了重写克隆对象并将其公之于众的内容。我想知道,为什么会这样? 欢迎提供所有答案。

  • 如果我克隆了以下类的一个实例,并在实例化时覆盖了一个方法,克隆会有被覆盖的方法吗?我在https://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html和https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#clone()中没有找到任何关于这种行为的内容。

  • 今天我开始玩分支,检查两个布尔值。我很确定,在某些优化级别上,它们将简单地添加并检查,但gcc和CLANG不是这样。为什么gcc不优化两个bool检查,用addition和一个check替换它们?让我给你看一个例子: 两个分支(test+je)不应该比加法和分支(add+jne)慢吗? 编辑:我真正的意思是乘法,因为在true和false的情况下(1+0),加法给出true(1),但乘法给出正确的

  • 我正在学习Java,正在使用java 8,spring 5.3.9和Apache Tomcat 9。我已经将我的jar文件添加到我的构建路径中的类路径中,将Apache Tomcat添加到我的服务器中,我的项目运行得非常好。现在我开始使用beans和xml文件,我遇到了一个问题。我的代码的一部分被触发,另一部分被忽略。 我有以下界面 FortuneService.java: 和一个快乐财富服务类: