私は少しJava N00Bですが、クローンについてはかなり混乱しています。
次の間違ったクラスを検討してください
class blah {
public blah(Collection<Integer> c){
member_collection = c.clone(); //the clone here is defensive
}
private final Collection<Integer> member_collection;
}
やりたいことは明確だと思います。
clone() シンボルが見つからない理由を理解しています: clone は、コレクションのパブリックメソッドではありません。ただし、具体的なクラスではそれを使用したいので、コンパイラにそれを伝えたいだけです。
一般的なコレクションのクローンを作成したいと思ったのは私が初めてではないと思いますが、私が見たチュートリアルでは、問題を回避する方法ではなく、コレクションのクローンを作成できない理由を説明しているだけです。私は getClass() とキャストでハッキーなことを試しましたが、通常は醜い try-catch ブロックを作成する必要があり、正確に 1 つの初期化 (ポインター member_collection) が最終であることを確認するのは困難です!
私が本当にやりたいことは、何らかの形でその情報を型に入れることです。これを行う良い方法はありますか?
ありがとう!