問題タブ [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.

0 投票する
5 に答える
5033 参照

java - クローニングは、コンストラクタ/ファクトリ メソッドよりもパフォーマンスを向上させますか?

オブジェクトのインスタンス化の代わりにクローンを使用しているように見える古い Java コード ベース (jvm 1.4) を維持しています。パフォーマンスの最適化として推測しています。これは不自然な例です:

時期尚早の最適化に関する通常の警告にもかかわらず、これは実際にある時点で推奨されるイディオムでしたか?

0 投票する
4 に答える
49062 参照

c# - c# で ICloneable を実装する必要があるのはなぜですか?

ICloneableメソッドを継承して実装する必要がある理由を説明してもらえますClone()か?

ディープ コピーを実行したい場合、メソッドを実装することはできませんか? としましょうMyClone()か?

から継承する必要があるのはなぜICloneableですか? 利点は何ですか?コードを「読みやすく」するだけの問題ですか?

0 投票する
5 に答える
7746 参照

java - Java: Cloneable インターフェースの理論的根拠

インターフェイス.clone()でメソッドが指定されなかったのはなぜですか?java.lang.Cloneable

0 投票する
7 に答える
3469 参照

java - Java オブジェクトがシリアライズ可能であり、クローン可能ではないことが理にかなっているのはいつですか?

Java クラスがSerializableインターフェースを実装しているがパブリック メソッドを持たない場合clone()、通常は次のようなディープ コピーを作成できます。

私はこのようなサードパーティのライブラリ クラスによく遭遇し、上記のようなハックに頼っています。ObjectOutputStream場合によっては、コピーを浅くするために拡張することさえありました。非効率的であること以外に、重大な問題が発生したことはありません (エンコード/デコードが遅く、一時的なシリアル化グラフが大量のメモリを消費する可能性があります)。

この手法を安全に使用できない場合は、おそらくクラスを宣言すべきではありませんSerializable

だから私が知りたいのは、あなたのクラスSerializableが.clone()Cloneable


関連: Java でオブジェクトをコピーする

0 投票する
9 に答える
118368 参照

java - クローンメソッドを適切にオーバーライドする方法は?

スーパークラスを持たないオブジェクトの1つにディープクローンを実装する必要があります。

CloneNotSupportedExceptionスーパークラス(である)によってスローされたチェックを処理するための最良の方法は何Objectですか?

同僚から、次のように処理するようにアドバイスされました。

これは私には良い解決策のように思えますが、StackOverflowコミュニティにそれを投げて、他に含めることができる洞察があるかどうかを確認したいと思いました。ありがとう!

0 投票する
3 に答える
48990 参照

java - instanceof - 互換性のない条件付きオペランドの型

以下は正常にコンパイルされます。

しかし、これはしません:

コンパイラ エラーがスローされます。

何が問題ですか?

0 投票する
2 に答える
916 参照

java - Object[] はどのように複製可能ですか

これは、o/p として true を返します。私はなぜ理解できませんでしたか?

0 投票する
2 に答える
933 参照

java - Clonable を Java に実装する

どのような場合にこの方法を使用する必要がありますか:

そして、どの場合にそのように使用する必要がありますか:

xが final で、最初の方法を使用したい場合はどうすればよいですか?

最初の方法については、次のように理解しています。スーパークラスを複製してアップキャストしたため、一部のメンバーが初期化されていません。この後、これらのメンバーを初期化します。私の理解は正しいですか?

ありがとうございました。

0 投票する
3 に答える
1671 参照

java - クローン可能インターフェイスとスローする必要のある例外に関する質問

Javaのドキュメントには次のように書かれています。

クラスはCloneableインターフェースを実装して、Object.clone()メソッドに、そのメソッドがそのクラスのインスタンスのフィールドごとのコピーを作成することが合法であることを示します。

Cloneableインターフェイスを実装していないインスタンスでObjectのcloneメソッドを呼び出すと、例外CloneNotSupportedExceptionがスローされます。

慣例により、このインターフェースを実装するクラスは、パブリックメソッドでObject.clone(保護されている)をオーバーライドする必要があります。このメソッドのオーバーライドの詳細については、Object.clone()を参照してください。

このインターフェースにはcloneメソッドが含まれていないことに注意してください。したがって、オブジェクトがこのインターフェイスを実装しているという事実だけでオブジェクトのクローンを作成することはできません。cloneメソッドが反射的に呼び出されたとしても、それが成功するという保証はありません。

そして私はこのUserProfileクラスを持っています:

そして、ネズミイルカをテストするために、私はこれを次のように行いますmain()

これまでのところ、コンパイル/実行に問題はありません。さて、ドキュメントの私の理解によればimplements Cloneable、クラスから削除するとUserProfile、呼び出しで例外がスローされるはずup1.clone()ですが、そうではありません。

この辺りでCloneableインターフェースが壊れていることを読みましたが、それが何を意味するのか本当にわかりません。私は何かが足りないのですか?