クローン可能なクラスが必要な場合、クローンをオーバーライドする必要があるのはなぜですか? すべてのクラスは から拡張され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 に答える