ホームページ > Java > &#&チュートリアル > Java の `clone()` メソッドが保護されており、`Cloneable` インターフェイスの一部ではないのはなぜですか?

Java の `clone()` メソッドが保護されており、`Cloneable` インターフェイスの一部ではないのはなぜですか?

DDD
リリース: 2024-11-25 11:02:11
オリジナル
436 人が閲覧しました

Why is Java’s `clone()` Method Protected and Not Part of the `Cloneable` Interface?

Java の保護された Clone() メソッド: 不可解な決定

Java の clone() は、java.lang 内で保護された独特のメソッドです。物体。なぜこのような複雑な決定を下すのでしょうか?

Cloneable インターフェイスを利用できない

コピー可能なクラスがクローン可能なインターフェイスを実装する他のフレームワークとは異なり、Java の clone() は Cloneable で宣言されません。したがって、インターフェイスを使用して複製可能性をチェックすることは不可能です。 「if(a instanceof Cloneable)」のようなコードは、「a」がクローン作成をサポートしているかどうかを判断できません。

リフレクションの依存関係

この制限を回避するには、リフレクションを使用できます。ただし、このアプローチでは不必要な複雑さが生じ、具体的なクラス実装の知識に依存します。また、文書化されておらず強制力もない厳格なプロトコルに依存していることも多い。

残念な設計

Effective Java の著者である Josh Bloch は、Cloneable の設計を「間違い」だとラベル付けしている。クローン作成のサポートを効果的に宣伝できず、面倒なプロトコルが課せられます。代わりに、クラス レベルで Cloneable を実装し、プロトコルへの準拠を確保することを提案しています。

以上がJava の `clone()` メソッドが保護されており、`Cloneable` インターフェイスの一部ではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート