gpt4 book ai didi

java - 在 Java 中克隆的目的

转载 作者:行者123 更新时间:2023-11-30 05:47:47 25 4
gpt4 key购买 nike

我正在研究 Java 的“特殊”功能,并开始阅读有关克隆的内容。

所以目前我的理解是克隆可用于获取对象的相同拷贝。为此,您需要实现 Cloneable 接口(interface)并覆盖 Object 的克隆方法(这在我看来真的很奇怪)

我的问题更多是关于 C++ 和 Java 之间的比较。当我们已经支持复制构造函数时,为什么还需要一个单独的克隆方法。克隆被认为是必须具备的特征是否有历史原因?

PS:我不是在询问是否需要像 what is the need of cloning a object in Java 中那样“克隆” ,我想问的是,当 Java 已经支持复制构造函数时,是否需要 Cloneable 和克隆方法。

最佳答案

IMO 你的问题有两个部分。

What is the need for the Cloneable interface?

Cloneable 接口(interface)也称为标记接口(interface),这意味着它没有任何方法,它的全部目的是告诉您,该类的用户,它实现了< strong>clone()方法,继承自Object。这使您能够在调用 clone() 方法之前进行检查:

Animal a = new Dog();
Animal b;
if (a instanceof Cloneable)
b = a.clone();

这在 Java 中经常发生;参见例如 Serializable 接口(interface)。

Why does Java need a clone() method at all, as it already has copy constructors?

非常简短的回答是多态性。如果您没有 clone() 方法,您将如何通过对 Animal 及其父类(super class)的引用正确克隆 Dog 实例?

关于java - 在 Java 中克隆的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com