ホームページ  >  に質問  >  本文

java - enum とは何ですか? なぜそこにあるのでしょうか? どのように使用するのですか?

実際の現象

予想される現象

  1. 独断的な抜粋文書形式の回答は拒否します (時間は重要です)

  2. enum を深く理解したいと考えています (少なくとも実際の運用環境で多くのコードを書いてきました)!

注: 私はプログラミングの初心者ではありません。一部の基本的な概念には一般科学を必要としません。

###コンテクスト###

我想大声告诉你我想大声告诉你2713日前655

全員に返信(7)返信します

  • 高洛峰

    高洛峰2017-05-17 10:03:51

    1. は、型安全性を確保するために、注文ステータス、証明書タイプなどの型定数を定義する代わりに使用できます
      たとえば、通常の String クラスが注文ステータスを表すために使用される場合、呼び出し元は、次のような String を渡すことができます。呼び出し先への注文ステータスの範囲内にありません。この種のエラーはコンパイル段階では見つかりません

    2. Java 列挙クラスは本質的に複数のインスタンス パターンの実装であり、シングルトン パターンは複数のインスタンス パターンの特殊なケースです

    3. 列挙型クラスは継承できません。たとえば、enumA extends enumB は許可されません

    4. 内部型を順番に持つ列挙クラスは Comparable インターフェイスを実装します

    返事
    0
  • ringa_lee

    ringa_lee2017-05-17 10:03:51

    Effective Java の第 6 章に詳細な説明があるので、確認してください

    返事
    0
  • 高洛峰

    高洛峰2017-05-17 10:03:51

    enum は単に注釈情報を持つ int 型と考えることができます。

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-17 10:03:51

    あなたの状況にショックを受けているので、私の個人的な考えをお話します

    enum は、アクセス可能な定数とパブリックな定数を含む特別なクラスとみなすことができます。実際、それらはクラスの読み込みプロセス中に定数プールに解析されます。セマンティックな観点から、定数を使用するときにその意味を表示しやすくします。同時に、定数の構築、特定の型のすべての定数のループ、switch ステートメントでの使用なども容易になります。

    返事
    0
  • 習慣沉默

    習慣沉默2017-05-17 10:03:51

    この質問は範囲が広すぎるため、答えるのが困難です。
    enum は本質的に java.lang.Enum を継承するクラスであり、シングルトンや入力を制限する必要がある場合に使用できます

    返事
    0
  • PHP中文网

    PHP中文网2017-05-17 10:03:51

    まず、私の個人的な表面的かつ主観的な理解をお話しし、いくつかのアイデアを述べさせてください。

    列挙型の目的は次のとおりだと思います:

    • 定数を管理する手段を提供します

    • 名前空間。

    • 返事
      0
  • ringa_lee

    ringa_lee2017-05-17 10:03:51

    enum の存在自体は、定数の可読性の問題を解決するためのものです。enum が存在しない前は、状態をマークするために int 型がよく使用されていましたが、1、2 などの可読性はあまり良くありませんでした。新しい定数が追加されました。長いステートメントを書くために、この一連の問題を解決するためにこの関数が jdk5 に追加されました。その本質は単なるクラスですが、列挙型を作成するときに、values()、ordinal() などのメソッドを自動的に生成し、switch ステートメントをサポートし、定数が登場するシナリオをカバーして、直接定義するよりも使用する方が便利です。定数。

    返事
    0
  • キャンセル返事