問題タブ [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 - 効果的なJava:clone()メソッドの分析
JoshBlochがclone()
コントラクトの何が問題になっているのかを説明しているEffectiveJavaItem 11(クローンを慎重にオーバーライドする)の次のことを考慮してください。
この契約には多くの問題があります。「コンストラクターが呼び出されない」という規定は強すぎます。正常に動作するクローンメソッドは、コンストラクターを呼び出して、構築中のクローンの内部にオブジェクトを作成できます。クラスがfinalの場合、cloneはコンストラクターによって作成されたオブジェクトを返すこともできます。
Josh Blochが最初の段落で言っていることを誰かが「クラスがの場合、コンストラクターによって作成されたオブジェクトを返すことさえできる」と説明できますfinal
かclone
?こことは何の関係final
がありclone()
ますか?
scala - Scalacollection.mutable.Cloneableの目的
可変コレクションのクローンを作成しようとしたとき、私の最初のアプローチは、mutable.Cloneable特性でclone()メソッドを使用することでした。ただし、これは、ディープコピーではなく、参照のコピーを作成するjava.Object.clone実装に依存します。テストから、可変であることが確認できます。{Queue、Seq、Set}すべての浅いコピー。
ディープコピーを作成するために大雑把な新しいxxx(copy:_ *)アプローチに頼りましたが、私の質問は、可変の目的は何ですか?実装されていない場合のクローン可能な特性ですか?
java - 効果的な Java。複製可能なインターフェース
私はEffective Javaの本を読みましたが、Clonableインターフェースを説明している段落が1つ理解できません。誰かが私にこの段落を説明できますか:
...プログラマーは、クラスを拡張してサブクラスから呼び出す場合
super.clone
、返されるオブジェクトはサブクラスのインスタンスになると想定しています。スーパークラスがこの機能を提供できる唯一の方法は、 を呼び出して取得したオブジェクトを返すことsuper.clone
です。clone メソッドがコンストラクターによって作成されたオブジェクトを返す場合、そのオブジェクトのクラスは間違っています。
ありがとう。
java - Java ドラッグ & ドロップおよびクローン可能
私はあなたが持っている場所を解決するためにこの問題を抱えておりJPanel
、ドラッグアンドドロップでクローンを作成し、ドロップされた場所にクローンを作成するJLabel
必要があります。最初に聞きたいのは、リスナーのような匿名クラスにインターフェイスを実装できるかどうかです。そのため、を拡張して実装する独自のクラスを作成する必要はありません。「テキスト」プロパティを転送してにドラッグアンドドロップする方法は知っていますが、にクローンする方法がわかりません。JLabel
JLabel
JPanel
JLabel
Cloneable
JLabel
JLabel
Cloneable
JLabel
JTextField
JLabel
JPanel
android - CloneNotSupportedException ですが、clone() を呼び出すことはありません
CloneNotSupportedException が発生していますが、コード内で clone() を呼び出している場所が見つかりません。Java Docs を調べましたが、オブジェクトで clone() を呼び出す以外に、この例外がスローされる理由が見つかりません。
この例外が呼び出される別の理由を知っている人はいますか? オブジェクトを別のオブジェクトと等しく設定すると、clone() が呼び出されますか? 私のクラスはどれも Cloneable を実装していません。
これが私のLogCatです:
c# - Winforms Designer: カスタム コントロールをコピーして貼り付けると、ポインターではなくクローンが必要になります
「MyControl」というコントロールがあります。これには、約 15 ~ 20 個のプロパティを含むオブジェクトである「SettingsObject」という名前のオブジェクトが関連付けられています。
ビジュアル スタジオ デザイナーを使用してコントロールをコピー アンド ペーストすると、「SettingsObject」がコピーされないという問題が発生しています (ICloneable を使用しているか、任意のコンストラクターを使用して新しいオブジェクトを作成しようとしています)。最初のコントロールのオブジェクトへのポインターを使用するだけです。
オリジナルを指すのではなく、コピーに「SettingsObject」をコピーするにはどうすればよいですか。
ありがとう!
java - java: クローン メソッド違反
コードビハインド:
あるオブジェクトのフィールドをまったく別のオブジェクトに割り当てようとしているので、クローンの意味に違反していることはわかっています。しかし、私を混乱させているのはエラーステートメントです。
ステートメント: 「エラー: clone() はオブジェクトへのアクセスを保護しています」
A を拡張するclone()
と、B も利用できるようになりますか? そうであれば、i と j の値を l と m にもコピーする必要がありますか? これは可能ですか?
java - 派生クラスで super.clone() 操作が機能しない
これは、私のプロジェクトで直面した技術的な問題のために提起されました。
問題: サード パーティのライブラリ クラス (コンテンツを変更するアクセス権がない) からプロパティ (継承) を拡張したクラスのオブジェクトを複製する必要があります。
以下の例で説明しましょう。
親クラス:
子クラス:
これを実行しようとすると、super.clone()
メソッドは Class - UnChangeableBaseClass
Type を参照し、メソッドをオーバーライドしませんObject clone()
。私は、すべてのクラスが で拡張されていると信じています。メソッドはjava.lang.Object class
暗黙的protected Object clone()
にこの親クラスに継承されます。だから、派生クラスのこのメソッドが親/オブジェクトのクローンメソッドをオーバーライドするような方法で考えました。ただし、ランタイム JVM では、で明示的に定義された clone メソッドを検索しますUnChangeableBaseClass
。混乱することなく適切に説明していただければ幸いです。
私の質問は次のとおりです。
親クラスにメソッドを追加してsuper.clone()
Object clone メソッドを呼び出さなければならない、この典型的なケースで clone メソッドを実装するにはどうすればよいですか。上記のケースが不可能な場合、派生クラス
オブジェクトを複製する他の方法はありますか (上記のシナリオのすべての制限を考慮して)最後に、この JVM の動作の理由 (上記で説明) を知りたいだけです。
c# - セッション内のオブジェクトをコピー/クローンする
カスタム クラスのインスタンスを Session に入れ、それを引き出す場合、Session の内容への参照ではなく、Session の内容の COPY として出力する必要があります。これが私が持っているもので、例として骨抜きにしています。
ステップスルーしてセッション変数を監視したところ、上記のコードにより、OLD.Company と NEW.Company の両方の AnotherClass.Value1 が「さようなら」に設定されます。
最初の Google 検索で、Company クラスに IClonable を実装する方向に導かれました。私は次のことを試しましたが、役に立ちませんでした:
その後...
それでも、両方の OLD.Company と NEW.Company の Value1 が「さようなら」になります。これは、MemberwiseClone() が「浅い」コピーを作成するためだと思われます。ここでの問題は、Value1 が参照型 (AnotherClass) であるプロパティの値であることです。
しかし同時に、ICloneable を実装しないと書かれているこのサイトも見つけました。したがって、ここでの私の目的のために、何をすべきか、どのようなアドバイスを追求すべきかはよくわかりません。
私が見つけた他のいくつかのサイトは、これのいくつかのバージョンを示しています:
これには、クラスをシリアライズ可能にする必要があります --- これはおそらく問題ありません (シリアライゼーションについて読む必要があります) が、ICloneable を使用しないことに関する記事を読んだ後、 ICloneable ソリューション。
android - Parcelオブジェクトのクローンを作成する方法
Parcelオブジェクト(パーセル可能ではない)のクローンを作成したい。
clone()メソッドは保護されているため、使用できません。また、Parcelクラスは「clonable」を実装していないため、リフレクションを使用して呼び出すことはできません。
問題の解決策を実行しようとしました: パーセルオブジェクトのコピーを作成します が、パーセルタイプ自体には適用されません-その理由は、パーセルタイプ自体に「writeToParcel」が定義されていないためです。したがって、オブジェクト'Parcel a'の場合、a.writeToParcel(parcel、0)はコンパイルされません。