Scalaでは、AnyRef.clone
は浅いコピーまたは深いコピーを実行しますか?Scala AnyRef.cloneは、浅いコピーまたは深いコピーを実行しますか?
13
A
答えて
21
短答:浅い。
それほど短くない答え: それは上書きでない限り、AnyRef.cloneは()の実装としてJavaのObject.clone()を使用しています。 Object.cloneに
のJavadoc():
クラスオブジェクト 方法クローンは、特定のクローニング操作を行います。 最初に、このオブジェクトのクラス がインタフェース Cloneableを実装していない場合、 CloneNotSupportedExceptionがスローされます。 すべての配列は、 がCloneableインタフェースを実装すると見なされることに注意してください。 それ以外の場合は、このオブジェクトのクラス のクラスの新しい インスタンスを作成し、 のすべてのフィールドを、このオブジェクトの 対応するフィールドの内容とまったく同じように初期化します。 の内容はフィールド自体は複製されません。 したがって、このメソッドは、 "深い コピー"操作ではなく、このオブジェクトの "浅い コピー"を実行します。
ご注意:
- AnyRef.clone()は、Javaでその対応のように、どこからでも呼び出し可能なので、そのない、 "保護" アクセスレベルを持っています。
- clone()を機能させるには、Cloneableを実装する必要があります。
長い答え:オーバーライドクローンは慎重
概要:それを使用しないでください効果的なJavaの第2版、アイテム11をお読みください。より良い選択肢があります。
関連する問題
- 1. 配列の深いコピーまたは浅いコピーを複製しますか?
- 2. 深い対浅いコピー、参照渡し
- 3. スライシング操作で深くまたは浅いコピーが得られますか?
- 4. オブジェクトはjavascriptの深いまたは浅いコピーで配列にプッシュされますか?
- 5. オブジェクトクローン浅いコピーは変数を変更しません
- 6. C:構造体の深いコピーを作成する...構造体の浅いコピーを作成する
- 7. LINQはコレクションの深いコピーを返しますか?
- 8. 深いコピーはいつQListに起こりますか?
- 9. Grailsで深いまたは浅いJSONシリアライゼーションを選択
- 10. C++コンパイラの「浅い」コピーと代入
- 11. Cでの浅いコピーとディープコピー
- 12. Python:浅く深いコピーコンストラクタの実装
- 13. Python:深くastノードツリーをコピーします。
- 14. C++ - ポインタを浅くコピーします。このコードはなぜ機能していますか?
- 15. コンストラクタをコピーする深さはどれくらいですか
- 16. リストの浅いコピーを作成するPythonは、オブジェクト属性では機能しませんか?
- 17. コピーコンストラクタ:深い抽象クラスをコピー
- 18. ツリーを深くコピーする方法は?
- 19. 特定のタグに浅いクローンをコピーする
- 20. CoffeeScriptはコピーされたディレクトリから実行できません
- 21. Pythonでは、どのように特定の深さにdictの深いコピーを行うでしょうか?
- 22. Scalaでクロージャをコピーすることはできますか?
- 23. コピー* .inkをデスクトップにコピーしますか?
- 24. WIXで生成されたMSIは、実行可能ファイルをコピーせず、他のファイルをコピーします。
- 25. アンドロイドはアセットフォルダからアプリデータにファイルをコピーしてコピーします
- 26. Scalaでリストをコピーするには
- 27. mpiの実行ファイルをどこにコピーしますか?
- 28. データベースのコピーを作成しましたが、コピーのサイズが大きいです
- 29. String.Substring():コピーまたは参照?
- 30. コピーJSONはJSONの半分しかコピーしません
"より良い選択肢があります。"あなたはいくつか参照してもらえますか? –
1. C++でコンストラクタをコピーします。 2. Scala 2.8.xに組み込みの "copy"メソッドを持つケースクラス。 3.不変オブジェクトを使用してください:コピーする必要はなく、共有するだけです。 –
C++のようなコピーコンストラクタは実際にはScalaでは大丈夫ですか?私はC++からその言語に来て、私の最初のコピーコンストラクタを実行する前に、私がいくつかの点を見逃しているかどうかを見たいと思っていました。 (私のオブジェクトは状態が変わります)。 – akauppi