クローン可能なクラスが必要な場合、クローンをオーバーライドする必要があるのはなぜですか? すべてのクラスは から拡張されObjectているのに、なぜ Object clone メソッドをオーバーライドする必要があるのでしょうか? 元の Object clone メソッドを呼び出すことができないのはなぜですか?
2 に答える
8
これは、JDK の多くの「設計上の欠陥」の 1 つです。
Clonableメソッドとのインターフェースである必要がありましたclone()が、代わりにマーカーインターフェースでありObject、メソッドの「何もしない」実装をclone()持っています...そしてあなたはあなたの質問に残されています.
興味がある場合は、この回答に Java の他の「間違い」がいくつかリストされています。
于 2013-03-18T12:52:35.377 に答える
1
ここを参照してください: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Cloneable.html
Cloneable インターフェイスを実装していないインスタンスで Object の clone メソッドを呼び出すと、例外 CloneNotSupportedException がスローされます。
また、この議論が役立つと思います: Confusion about cloneable interface and object.clone() in java
于 2013-03-18T13:01:03.670 に答える