2

clone()メソッドはデフォルトではObjectクラスに表示されないため、配列型のエラーを発生させないのはなぜですか?
これは、実装が Java で記述されている int[] と呼ばれる型があることを意味しますか?
それが書かれているなら、なぜそれを完全に書かないのですか?クラス
の動作だけでなく、すべてのメソッドを適切に実装しない理由を意味します。Object

    int[] a ={1,2,3};
    Object object = new Object();
    object.clone();//Does not compile since clone is protected.
    a.clone();// allowed as this method is from int[] 
4

5 に答える 5

6

すべての配列は Cloneable インターフェイスを実装しています。

Java 言語仕様の関連部分を参照してください: §10.7 配列メンバー

cloneクラス内の同じ名前のメソッドをオーバーライドし、Objectチェック例外をスローしないパブリック メソッド。clone配列型のメソッドの戻り値の型T[]は ですT[]。多次元配列のクローンは浅いです。つまり、単一の新しい配列のみを作成します。サブアレイは共有されます。

于 2012-08-23T06:49:25.837 に答える
0

Object.clone()メソッドにアクセスできるようにする Cloneable インターフェースがあるためです。Java の配列は既に Cloneable を実装しているため、配列オブジェクトを複製できます。

一方、任意のオブジェクトは、それ自体のフィールドごとのコピーを作成できることを保証できません。

于 2012-08-23T06:49:35.657 に答える
0

配列は通常のオブジェクトとして拡張できないためです。配列を作成する唯一の方法は、最初からインターフェイスCloneableを実装することでした。Cloneable同じ理由で、配列はデフォルトで実装されますSerializable

于 2012-08-23T07:08:02.603 に答える