Object类中的clone()实现

Inq*_*ive 3 java clone

我正在阅读这篇文章而且它说的是

Objectclone方法是非常棘手的.它基于现场副本,而且是"超语言".它创建一个对象而不调用构造函数".

我在grep代码中看到的只有以下几行:

protected native Object clone() throws CloneNotSupportedException;
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

Joa*_*uer 5

你错过了native这意味着它是在非Java代码中实现的(在这种情况下,它是在JVM本身中实现的).

那是因为clone 无法在Java代码中实现确切的功能(这使得它成为问题).

  • @Subhra:正如您链接的文章所指出的那样,`clone()`创建一个新对象,而无需调用构造函数.Java中只有两种机制允许这样:`clone()`和序列化.*两者都是用本机(非Java)代码实现的.纯Java代码可以创建对象(没有这两种机制)的唯一方法是使用`new`(或等效的`Class.newInstance()`)并且*always*调用构造函数. (4认同)