84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
enum の使い方は大体わかったけど、ソースに戻りたい(本質を議論する)
独断的な抜粋文書形式の回答は拒否します (時間は重要です)
enum を深く理解したいと考えています (少なくとも実際の運用環境で多くのコードを書いてきました)!
注: 私はプログラミングの初心者ではありません。一部の基本的な概念には一般科学を必要としません。
は、型安全性を確保するために、注文ステータス、証明書タイプなどの型定数を定義する代わりに使用できます たとえば、通常の String クラスが注文ステータスを表すために使用される場合、呼び出し元は、次のような String を渡すことができます。呼び出し先への注文ステータスの範囲内にありません。この種のエラーはコンパイル段階では見つかりません
Java 列挙クラスは本質的に複数のインスタンス パターンの実装であり、シングルトン パターンは複数のインスタンス パターンの特殊なケースです
列挙型クラスは継承できません。たとえば、enumA extends enumB は許可されません
内部型を順番に持つ列挙クラスは Comparable インターフェイスを実装します
Effective Java の第 6 章に詳細な説明があるので、確認してください
enum は単に注釈情報を持つ int 型と考えることができます。
あなたの状況にショックを受けているので、私の個人的な考えをお話します
enum は、アクセス可能な定数とパブリックな定数を含む特別なクラスとみなすことができます。実際、それらはクラスの読み込みプロセス中に定数プールに解析されます。セマンティックな観点から、定数を使用するときにその意味を表示しやすくします。同時に、定数の構築、特定の型のすべての定数のループ、switch ステートメントでの使用なども容易になります。
この質問は範囲が広すぎるため、答えるのが困難です。 enum は本質的に java.lang.Enum を継承するクラスであり、シングルトンや入力を制限する必要がある場合に使用できます
まず、私の個人的な表面的かつ主観的な理解をお話しし、いくつかのアイデアを述べさせてください。
enum の存在自体は、定数の可読性の問題を解決するためのものです。enum が存在しない前は、状態をマークするために int 型がよく使用されていましたが、1、2 などの可読性はあまり良くありませんでした。新しい定数が追加されました。長いステートメントを書くために、この一連の問題を解決するためにこの関数が jdk5 に追加されました。その本質は単なるクラスですが、列挙型を作成するときに、values()、ordinal() などのメソッドを自動的に生成し、switch ステートメントをサポートし、定数が登場するシナリオをカバーして、直接定義するよりも使用する方が便利です。定数。
は、型安全性を確保するために、注文ステータス、証明書タイプなどの型定数を定義する代わりに使用できます
たとえば、通常の String クラスが注文ステータスを表すために使用される場合、呼び出し元は、次のような String を渡すことができます。呼び出し先への注文ステータスの範囲内にありません。この種のエラーはコンパイル段階では見つかりません
Java 列挙クラスは本質的に複数のインスタンス パターンの実装であり、シングルトン パターンは複数のインスタンス パターンの特殊なケースです
列挙型クラスは継承できません。たとえば、enumA extends enumB は許可されません
内部型を順番に持つ列挙クラスは Comparable インターフェイスを実装します
Effective Java の第 6 章に詳細な説明があるので、確認してください
enum は単に注釈情報を持つ int 型と考えることができます。
あなたの状況にショックを受けているので、私の個人的な考えをお話します
enum は、アクセス可能な定数とパブリックな定数を含む特別なクラスとみなすことができます。実際、それらはクラスの読み込みプロセス中に定数プールに解析されます。セマンティックな観点から、定数を使用するときにその意味を表示しやすくします。同時に、定数の構築、特定の型のすべての定数のループ、switch ステートメントでの使用なども容易になります。
この質問は範囲が広すぎるため、答えるのが困難です。
enum は本質的に java.lang.Enum を継承するクラスであり、シングルトンや入力を制限する必要がある場合に使用できます
まず、私の個人的な表面的かつ主観的な理解をお話しし、いくつかのアイデアを述べさせてください。
列挙型の目的は次のとおりだと思います:enum の存在自体は、定数の可読性の問題を解決するためのものです。enum が存在しない前は、状態をマークするために int 型がよく使用されていましたが、1、2 などの可読性はあまり良くありませんでした。新しい定数が追加されました。長いステートメントを書くために、この一連の問題を解決するためにこの関数が jdk5 に追加されました。その本質は単なるクラスですが、列挙型を作成するときに、values()、ordinal() などのメソッドを自動的に生成し、switch ステートメントをサポートし、定数が登場するシナリオをカバーして、直接定義するよりも使用する方が便利です。定数。