7

クローン可能なクラスが必要な場合、クローンをオーバーライドする必要があるのはなぜですか? すべてのクラスは から拡張されObjectているのに、なぜ Object clone メソッドをオーバーライドする必要があるのでしょうか? 元の Object clone メソッドを呼び出すことができないのはなぜですか?

4

2 に答える 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 に答える