Java のクローンは、可能な限り決して使用すべきではないという程度に壊れているというコンセンサスがあるようです。
クローンが適切なツールのように見える状況がありますが、別の方法があるかどうか疑問に思っています:
mongo データベースにさまざまなオブジェクトが格納されています。これらは Morphia を使用して保存およびロードされ、正しいクラスとプロパティを持つオブジェクトが自動的に返されます。
場合によっては、データベースに保存されているのは、コピーを作成したいオブジェクトの「プロトタイプ」です。それは正しいクラスとデフォルト値でモルフィアから出てきます。クラスとデフォルト値を保持するコピーを作成できるようにしたいと考えています。例えば:
achievementPrototype = morphia.get(id);
playerAchievements.add(achievementPrototype.clone());
achievementPrototype は、AbstractAchievement の具体的な実装であるクラスのものです。クローンは私が望むことをしているようです。実績にプロパティとしてオブジェクトがある場合、それらのクローンを実装する必要があることは承知していますが、それで問題ありません。
clone() を使用する必要がありますか? そうでない場合は、何を使用すればよいですか?