私はこの回答を読んでいましたが、彼はリンクに言及しました、著者は、Cloneableを使用すべきではない理由を説明しています。しかし、そこに記載されていることにまだ疑問があります
Cloneable の配列がある場合、その配列を実行し、すべての要素を複製して配列のディープ コピーを作成できると思うかもしれませんが、それはできません。Cloneable には public clone メソッドがなく、 Object もないため、何かを Cloneable にキャストして clone メソッドを呼び出すことはできません。Cloneable にキャストして clone メソッドを呼び出そうとすると、コンパイラはオブジェクトに対して保護された clone メソッドを呼び出そうとしていると言うでしょう。
しかし、ここで私はやった
Init s = Init.getInstance(); // getting instance
int count=0;
Cloneable[] v = new Cloneable[5]; // creating array
Init x = s;
Init y = new Init(s);
try {
while (count < 5) {
v[count++] = (Cloneable) s.clone(); // casting it.
}
s.setClassName("Example");
System.out.println(((Init) v[2]).getClassName()); // Displaying.
} catch (CloneNotSupportedException ex) {
ex.printStackTrace();
}
私は Cloneable 配列を作成することができました、そして私は作者がエラーを引き起こすと言ったことをしましたか、または私は作者の声明を誤解しましたか? 誰でも、CloneableではなくCopy Constructorを選択する理由を理解するのを手伝ってください。