Java类中为什么不能直接调用Object的clone()方法
黄舟
黄舟 2017-04-18 10:16:27
0
5
1109

在Java中所有的类都是Object的子类。

在Object类中有一个clone方法定义如下:

protected native Object clone() throws CloneNotSupportedException;

该方法的修饰符为protected,表示该方法可以在子类中调用


然后结果是调用不了

网上有回答是需要实现Cloneable接口,但即使实现了,也调用不到。
不实现Cloneable接口,只是报CloneNotSupportedException异常。

只能重写clone方法,并且使用super.clone()

疑惑这是为什么呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(5)
巴扎黑

Cloneable インターフェースは単なるフラグであり、内部は空です。
Object の clone メソッドは、より効率的です。
clone メソッドを使用するためのいくつかの条件があります。 リーリー

2) オブジェクトのコピーを取得するには、Object クラスの clone メソッドを使用します。

3) 派生クラスで蓄積された clone メソッドをオーバーライドし、public として宣言します。

4) 派生クラスのcloneメソッドで、super.clone()を呼び出します。

詳細については、

http://www.cnblogs.com/gw811/...
を参照してください。

いいねを押す +0
PHPzhong

電話をかけることができます:

リーリー
いいねを押す +0
刘奇

clone() は保護されたスコープです。 Cloneable インターフェイスを継承した後、メソッドをオーバーライドし、メソッド内で親クラスの clone() メソッドを呼び出す必要があります。同時に、デフォルトのクローンは参照オブジェクトの浅いクローンにすぎません。実行して自分で試してみるコードを提供します:

リーリー リーリー リーリー
  • A は複製可能なインターフェースを継承し、B への参照を保持します。

いいねを押す +0
Ty80

Cloneable インターフェイスを実装し、 clone() メソッドをオーバーライドします。

いいねを押す +0
Peter_Zhu

最初に見たときは非常に混乱しましたが、試してみると、オブジェクト内の clone メソッドが直接呼び出されていることがわかりました。
コードは次のとおりです:

パブリック クラス CommonTest は Cloneable を実装します{

リーリー

}

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート