ホームページ >Java >&#&チュートリアル >Java Enum クラスを拡張して新しい要素を追加できないのはなぜですか?

Java Enum クラスを拡張して新しい要素を追加できないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 10:29:131040ブラウズ

Why Can't I Extend Java Enum Classes to Add New Elements?

新しい要素を追加するために列挙型クラスを拡張できません

Java 列挙型は最終クラスであり、サブクラス化できません。既存の列挙型を変更して新しい要素を追加することは現実的ではありません。 Java enum の設計では、すべての可能な値がコンパイル時に明示的に認識されるようにします。

次のコードを考えてみましょう:

enum A {
  a,
  b,
  c
}

enum B extends A {
  d
}

B は A を拡張し、新しい要素 d を追加しているように見えますが、 、これは Java では不可能です。 d は A のインスタンスであり、B の個別の値でもあるため、新しい値で列挙型を拡張すると、不整合が発生します。

さらに、列挙型の目的は、既知の値の固定セットを定義することです。 。新しい要素で列挙型を拡張すると、この概念が損なわれ、元の列挙型の値しか知らないユーザーにとって曖昧さが生じます。

列挙型を拡張する代わりに、Java の不変性の原則に沿った代替ソリューションを検討し、コンパイルします。時間の安全。たとえば、必要な値を含む新しい列挙型を作成したり、合成を使用して列挙型をカプセル化し、必要に応じて追加の機能を提供するクラスを作成したりできます。

以上がJava Enum クラスを拡張して新しい要素を追加できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。