Java阵列如何实现可克隆性?

Java阵列如何实现可克隆性?,java,arrays,clone,Java,Arrays,Clone,发件人: 请注意,所有阵列都被视为实现接口Cloneable。否则,此方法将创建此对象类的新实例,并使用此对象对应字段的内容初始化其所有字段,就像通过赋值一样;字段的内容本身不是克隆的。因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作 但并不表示数组实现了可克隆的 数组如何实现Cloneable?您混淆了java.util.arrays,它是一个普通的类,包含使用数组的方法,而数组本身在java语言中是一个相当特殊的构造,但仍然是具有合成类的对象。这个类实现了Cloneable。它也直接

发件人:

请注意,所有阵列都被视为实现接口
Cloneable
。否则,此方法将创建此对象类的新实例,并使用此对象对应字段的内容初始化其所有字段,就像通过赋值一样;字段的内容本身不是克隆的。因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作

但并不表示
数组实现了可克隆的


数组如何实现
Cloneable

您混淆了
java.util.arrays
,它是一个普通的类,包含使用数组的方法,而数组本身在java语言中是一个相当特殊的构造,但仍然是具有合成类的对象。这个类实现了
Cloneable
。它也直接从
对象
派生。看看这本书,这本书的主题很清楚

例如,查看此代码(取自上述JLS):

这将打印:

class [I
class java.lang.Object

java.util.Arrays
是一个包含在java数组上运行的实用程序的类,不能与数组本身混淆

数组是一个容器对象,它包含固定数量的单一类型的值。它们是用Java语言显式定义的一种特殊类型的对象。所有Java数组都实现
Java.lang.Cloneable
Java.io.Serializable


另一方面,
java.util.Arrays
,不实现这些接口,只提供实现在数组上执行的公共函数的静态方法

克隆一维数组(如
Object[]
)时,将使用包含原始数组元素(而非引用)副本的新数组执行“深度复制”


多维数组的克隆(如
Object[][]
)是一个“浅拷贝”,也就是说,它只创建一个新数组,每个元素数组引用一个原始元素数组。

java.util.array类不是数组实例的基类。事实上,它的所有方法都是静态的,并且它没有实现可克隆的接口。我会得到一些引用数组的文档,就像我们使用Java Docs for Array类一样吗?@user2488578我所知道的最接近的是:最好的引用是我提到的页面。数组的Javadoc非常短,它唯一的成员(从对象继承的成员除外)是
length
及其
clone()
的实现。
class [I
class java.lang.Object