問題タブ [cloneable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Object.clone()によって行われるこのフィールドごとのコピーは何ですか?
効果的なJavaで、著者は次のように述べています。
クラスがCloneableを実装している場合、Objectのcloneメソッドはオブジェクトのフィールドごとのコピーを返します。それ以外の場合は、CloneNotSupportedExceptionをスローします。
私が知りたいのは、フィールドごとのコピーで彼が何を意味するのかということです。クラスのメモリにXバイトがある場合、そのメモリの一部をコピーするだけだということですか?はいの場合、元のクラスのすべての値型が新しいオブジェクトにコピーされると想定できますか?
Object.clone()
クラスのフィールドごとのコピーが何であるかというと、Point
フィールドを明示的にコピーする必要はないと思います。上記のコードは、クラスのクローンを作成するのに十分すぎるほどです。つまり、次のコードは冗長です。x
y
Point
私は正しいですか?
複製されたオブジェクトの参照は、元のオブジェクトの参照が指している場所を自動的に指すことを知っていますが、値型で具体的に何が起こるかはわかりません。誰かがObject.clone()
のアルゴリズム仕様が(簡単な言語で)何であるかを明確に述べることができれば、それは素晴らしいことです。
java - LinkedListにクローンを実装する
clone()
にメソッドを実装しようとしていDoubleLinkedList
ます。DoubleLinkedList
さて、問題は、「規則」によってそれを実装することは、単に新しいものを作成して、現在のDoubleLinkedListのすべての要素で埋めるよりもはるかに面倒なことです。
それをしているときに私が見ない不便はありますか?
これが私の現在のアプローチです:
慣例により、次のようになります。
java - Eclipse Galileo用のJavaの「clone()」メソッドジェネレーター
clone()
リポジトリから入手できるEclipseGalileoでのJavaのメソッド生成に最適なツールは何ですか?Eclipse開発者がこのツールを標準リリースに含めることができない理由は何ですか?
java - CXF:wsdl2javaからのクローン可能なクラス?
CXFのwsdl2javaにクローン可能なクラスを発行させることは可能ですか?たぶん、いくつかのオプションまたはプラグインを介して?
私がする必要があるのは、あるオブジェクトツリーから別のオブジェクトツリーにかなり複雑なスキーマ構造を値でコピーすることであり、各メンバーの値を手動で取得/設定したり、生成されたクラスに手動で触れたりすることはありません。
/Björn
c# - クローン可能な「長い」の代わりに何を使用できますか?
クローン可能な「長い」の代わりに何を使用できますか?
ここでエラーが発生しているコードを以下に参照してください。
編集:見つけた次のコードを使用したかったことを忘れていました(以下を参照)。
java - クローン可能な動作
Javadocによると-
クラスObject自体はインターフェイスCloneableを実装していないため、クラスがObjectであるオブジェクトに対してcloneメソッドを呼び出すと、実行時に例外がスローされます。
Objectクラスのcloneメソッドが保護されているのはなぜですか?そうですか ?
つまり、cloneableを実装していないクラスは、cloneメソッドが呼び出されたときにCloneNotSupported例外をスローします。
テストプログラムを実行しました
クラステストのクローンメソッドからsuper.cloneが呼び出されていますか?
なぜ例外をスローしないのですか?
c++ - 多重継承オブジェクトのクローンを作成するにはどうすればよいですか?
クローン可能なインターフェースを定義しました:
他にもいくつかのインターフェイスクラスがあります(問題に関係のないコンテンツ):
上記のクラスから継承するリーフオブジェクトを作成しました。
エラーが発生しました:
タイプをに変更するとCloneable *
、次のエラーメッセージが表示さ れます。
私の質問(すべて関連):
- リーフクラスはどのようにして
Cloneable
インターフェースの要件を解決できますか? - すべてのオブジェクトがクローン作成を実装することが保証されているクローン作成コントラクトを実装するためのより良いソリューションはありますか?
私はこのパラダイムをジェネリックプログラミング(レコード、フィールド、データベース)の一部として使用しています。
コンパイラ:MS Visual Studio 2008; プラットフォーム:WindowsXPおよびVista
jquery - jQueryでフォームを複製し、インデックスを増やす
これは比較的単純なようです。jQueryの構文に困惑しています。
基本的に私はこの形を取りたいです:
そして、ボタンでそれを複製し、変数番号を増やします。
java - CloneableはJavaでどのように機能し、どのように使用しますか?
私は次のことを知りたいです:
Cloneable
これは、インターフェイスを実装することで、オブジェクトのクローンまたはコピーを作成できることを意味しCloneable
ます。それを行うことの長所と短所は何ですか?- オブジェクトが複合オブジェクトの場合、再帰的なクローン作成はどのように行われますか?
java - Object.clone の代わりにコピー コンストラクターを使用してディープ コピーする適切な方法
Object.clone を使用してディープ コピーを実行するコードがいくつかありますが、より「受け入れられる」コピー コンストラクター手法を使用してコードを書き直そうとしています。以下は、私がやろうとしていることの 2 つの簡単な例です。最初はクローンを使用し、2 番目はコピー コンストラクターを使用しています。
クローンを使用したディープ コピー
コピー コンストラクターを使用したディープ コピー
私が興味深いと思うのは、Java でのクローン作成の弊害についてのあらゆる議論にもかかわらず、クローンの代替案はより少ないコードとより少ないキャスト (少なくともこの特定のケースでは) を必要とするということです。
コピー コンストラクターの代替案に関するフィードバックをいただければ幸いです。あなたはそれを別の方法で行いますか?ありがとう。