コードで説明する方が簡単なので、ここに
Object anObj;
anObj = new MyObj();
anObj = new Rectangle();
anObj.clone();//this doesnt exist because its on the root Object class
この例では、Object.clone()メソッドの代わりに何を使用できますか?
-----------------------追加情報------------------------- -----
追加情報を追加しましたが、すべての回答の途中にあるようですので、ここでも読むことができます。
こんにちは、これらはすべて、クローン作成またはコピーのトピックで本当に役立ちます。これについては、今考える必要があります。しかし、彼らは最初の質問を助けません。多分私からのより多くの情報はあなたが私が何をしたかを理解するのを助けるでしょう。
各オブジェクトのクローンをオーバーライドし、オブジェクトを完全にクローンするために必要な他のすべてのクローンおよびコピーメソッドを追加します。これには、バッファリングされたイメージをコピーするカスタムメソッドの追加が含まれます。すなわち:-
public Object clone() {//i copied from 'thelost's answer
try {
CloningExample copy = (CloningExample)super.clone();
copy.names = (LinkedList)names.clone();
return copy;
} catch (CloneNotSupportedException e) {
return null;
}
}
しかし、クラスにはObjectという変数が1つありますが、それは異なるタイプの他のさまざまなオブジェクトを保持しているため、各タイプにはcloneメソッドがありますが、各タイプかどうかを確認してからclone()を呼び出すことはできません。私のタイプは、多くのタイプがあるので非常に長くなりますが、オブジェクトを簡単にコピーまたは複製する方法がわかりません。このような静的メソッドを作成する方法はありますか?
static findTypeAndCopy(Object thisobj){
if(thisobj==null)
return null;
if(thisobj instanceOf MyObj1){
return ((MyObj1)thisobj).clone();
}else if(thisobj instanceOf MyObj2){
return ((MyObj2)thisobj).clone();
...
etc
}
???