列挙は、標準化された形式のパラメーターであるため、INTタイプのパラメーターが引き起こす可能性のあるファジー概念を明示的に置き換えることができます。列挙は、タイプの不一致を考慮せずにクラスと配列のようなものです。
Sunによって導入された新しいキーワードとして、Enumは特別なクラスのように見えます。また、独自の変数を持ち、独自の方法を定義し、1つ以上のインターフェイスを実装することもできます。列挙型を宣言するとき、列挙タイプには次のようにいくつかの特性があることに気付くはずです。
1.パブリックコンストラクターを持つことはできません。そうすることで、クライアントコードが新しいインスタンスを作成できないことを確認できます。
2。すべての列挙値は、公開、静的、最終です。これは列挙値のみであることに注意してください。通常のクラスで変数を定義するのと同じように、あらゆるタイプの他の非操作者変数を定義できます。これらの変数は、必要な任意の修飾子で作成できます。
3.列挙は、デフォルトでjava.lang.comの比類のないインターフェイスを実装します。
4. enumは、toStringメソッドをオーバーライドするため、color.blue.toString()を呼び出す場合、デフォルトで文字列「青」を返します。
5。ENUMは、ToStringメソッドに対応するValueOFメソッドを提供します。 valueof( "blue")を呼び出しますcolor.blueを返します。したがって、私たちはこれに注意を払う必要があります。つまり、それに応じてValueofメソッドを書き換える必要があります。
6. enumは、すべての列挙値を簡単に通過できる値メソッドも提供します。
7. enumにはオリディナメソッドもあり、列挙クラスの列挙値の順序を返します。この順序は、列挙値宣言の順序に依存します。ここでcolor.red.ordinal()は0を返します。
これらの基本的な機能を理解した後、それらの使用方法を見てみましょう。
1。すべての列挙値を通過します。値の方法があることを知っているので、foreachループを使用して、よく知られた方法で列挙値を通過できます。
for(color c:color.values())system.out.println( "find value:" + c);
2。列挙のメソッドと変数を定義します。たとえば、色にメソッドを追加して、色をランダムに返すことができます。
public Enum Color {赤、緑、青。 private static int number = color.values()。length; public static color getRandomColor(){long random = system.currenttimemillis()%番号; switch((int)random){case 0:return color.red;ケース1:color.greenを返します。ケース2:color.blueを返します。デフォルト:color.redを返します。 }}}列挙タイプの変数とメソッドを定義することと、通常のクラスでは方法と変数を定義することに違いはないことがわかります。注意すべき唯一のことは、すべての列挙値定義の後に可変定義とメソッドの定義を配置する必要があることです。そうしないと、コンパイラがエラーを提供します。
3。ToString、Valueofメソッドをオーバーライドします
Enumは、Tostring、Valueofなどのメソッドを提供していることをすでに知っています。多くの場合、デフォルトのToStringメソッドをオーバーライドする必要があります。実際、これは通常のクラスを使用してトストリング方法を無効にすることと違いはありません。
…。 public string toString(){switch(this){case red:return "color.red";ケースグリーン:「color.green」を返します。ケースブルー:「color.blue」を返します。デフォルト:「unnokn color」を返します。 }}…。この時点で、前のトラバーサルコードで印刷されたものが
color.red color.green color.blue
その代わり
赤い緑色。
Tostringが実際に上書きされていることがわかります。一般的に言えば、ToStringを上書きするときは、一貫性を維持するためにValueof Methodを上書きする必要があります。
4。コンストラクターの使用
Enumにはパブリックコンストラクターがありませんが、プライベートコンストラクターを定義し、列挙内で使用することができます。色の例を使用しましょう。
public enum color {red( "this is red")、緑( "これは緑")、青( "これは青");プライベート文字列DESC; color(string desc){this.desc =} public string getDesc(){return this.desc; }}ここでは、各色の説明情報を提供し、この説明情報を受け入れるコンストラクターを定義します。
コンストラクターが内部でのみ使用できるようにし、クライアントコードが列挙値のインスタンスを新たにできないように、コンストラクターを公開または保護することはできないことに注意する必要があります。列挙値はパブリック静的ファイナルの定数にすぎないことがわかっているため、これも完全に合理的です。
5.特定のインターフェイスを実装します
列挙は変数とメソッドを定義できることをすでに知っています。インターフェイスを実装し、通常のクラスのようなインターフェイスを実装する必要があります。ここでは例を挙げません。
6.列挙値の独自の方法を定義します。
以前には、いくつかのメソッドを列挙に対して定義できることがわかりましたが、実際には各列挙値のメソッドを定義することさえできます。このようにして、オーバーライドトストリングの以前の例をこのように書き直すことができます。
public enum color {red {public string toString(){return "color.red"; }}、green {public string toString(){return "color.green"; }}、blue {public string toString(){return "color.blue"; }}; }論理的に言えば、これは「グローバル」なものを提供する元のTostringメソッドよりも明確です。
一般に、Enumは完全に新しいタイプとして、プログラマーがよりシンプルで理解しやすいコードを作成するのを支援することを望んでいます。
人々は通常、列挙の高度な機能を使用する必要はありません。そうしないと、シンプルでわかりやすい本来の意図に反します。
上記の記事は、Jave Enumerationの役割と利点について簡単に説明しています。私があなたと共有するすべてのコンテンツです。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。