Java:格付の理由に複製可能面
-
22-08-2019 - |
質問
なぜなの .clone()
methodで指定された java.lang.Cloneable
ス?
解決
基本的に、それは壊れたインタフェースです。ケン・アーノルドとビル・ベナーズは、Java設計上の問題のrel="noreferrer">の
アーノルドます: 、私は廃止の
私はこの時点で神としていた、と多くの人は、おそらく私はないです喜んでいる場合は、
Cloneable
を言うとCopyable
に問題があるため、Cloneable
を持っています。それがスペルミスだという事実のほかに、Cloneable
はclone
メソッドが含まれていません。それはあなたが何かがCloneable
のインスタンスである場合、テストCloneable
にキャストし、clone
を呼び出すことはできませんを意味します。あなたはひどいである、再び反射を使用する必要があります。それは唯一の問題ですが、私は確かに解決したい1。
他のヒント
Javaのバグデータベースにこのバグを参照してください。
http://bugs.sun.com/bugdatabase/view_bug.do? bug_id = 4098033 の
基本的に、これは彼らがそうするようCloneableインタフェースに修正しようとされていないが、いくつかの既存のコードとの互換性を壊すことのJavaの以前のバージョンの設計上の欠陥である。
Javaでは、このコンセプトのマーカーインタフェースの Cloneable
インターフェースのない方法または分野においてのみ特定の意味が複製可能です。
から dev-x ウェブサイト:
よく行くンタフェースはJavaのない行為です。つまり、あるいは空のインタフェース定義.それが、マーカーインタフェース例マーカーインターフェースJava APIを含む:
私は仕事のプロジェクトでは、我々は、PublicCloneableと呼ばれるインターフェースを作成しました それは、cloneメソッドが含まれており、それがパブリックであることを指定します。
cloneメソッドがあるという事実が、あなたは、それは非常に助けにはならないアクセスすることはできません。私はこの1つ便利を見つけます。
public interface PublicCloneable extends Cloneable {
public Object clone();
}
cloneメソッドは、その「特別な」条件のためにObjectクラスで実装されているので:。どのような種類のオブジェクトのメモリコピー