1.列挙定数と静的定数の違い
列挙に関しては、まず、public static final Stringによって変更された定数とどのように異なるかについて考えます。
列挙の2つの利点を引用します。
1.タイプの安全性を確保する:発信者は、intまたは文字列の値を自由に渡すことができません。
2。コードは非常に読みやすいです。
例えば:
実際のプログラミングでは、多くの場合、そのような「データセット」があり、その値はプログラムで安定しており、「データセット」の要素は限られています。たとえば、春、夏、秋、冬の4つのデータ要素は、フォーシーズンの「データセット」を形成します。
メソッドget(文字列季節)を作成しましたが、入力したタイプは文字列型のみになり、文字列は(春、夏、秋、冬)のみです。
この時。 4つの文字列定数を書きます
public class common {public static final string spring = "spring"; public static final string season = "Summer"; public static final String Summer = "Autumn"; public static final string autumn = "winter";}GETメソッドにGet(Common.season)を置くことは、実際に「スプリング」を入れていますが、現時点ではここに隠された危険があることがわかります。 (文字列季節)、結局のところ、文字列タイプが置かれます。この方法では、新しい同僚や情報のない同僚が「春、夏、秋、冬」しか置くことができないことを知らない場合。 get( "xiaoxiao")などの文字列を置きます。現時点では、コンピレーション期間中にエラーを報告しません。実行後にのみ、それが間違っていることがわかります。
上記の隠された危険を防ぐために、列挙が表示されます
パブリックエインムシーズン{春( "春")、夏(「夏」)、秋(「秋」)、冬(「冬」); ....}この時点で、GETメソッドのパラメーター転送を変更し、GET(シーズンシーズン)に変更します。この時点で、get(seans.spring)を追加します。
2。列挙を理解します
まず、明確にする必要があります。実際、列挙はクラスクラスでもあります。理解するために列挙を書きます。
//私たちは酵素を一般的なクラスのパブリックエインムシーズンとして扱います{春(1、「春」)、夏(2、「夏」)、秋(3、「秋」)、冬(4、「冬」); //ここの最後のものはセミコロンである必要があります。そうしないと、エラーが報告されます/ *パブリックスタティックファイナルシーズン春=新しいシーズン(1、春)として理解できます。 *パブリックスタティックファイナルシーズン夏=新しいシーズン(2、夏); *パブリックスタティックファイナルシーズン秋=新しいシーズン(3、秋); *パブリックスタティックファイナルシーズン冬=新しいシーズン(4、冬); *それはオブジェクトであるため、以下を理解するのは簡単です*//** 1。上記のオブジェクトには2つのパラメーターがあります。したがって、このタイプのコンストラクターが下にある必要があります* 2。 this.code = code; } //オブジェクトの属性プライベート文字列名。プライベートINTコード; //オブジェクトプロパティを取得する方法public string getname(){return this.name; } public string getCode(){return this.name; } //コードを介してオブジェクトを取得すると、オブジェクトの他のプロパティを取得できますpublic staticシーズンデコード(int code){シーズンシーズン= null; for(シーズンタイプ:season.values()){if(type.code == code){season = type;壊す; }}リターンシーズン; } // re-tostringメソッドpublic string toString(){return this.name; }}上記の例では、列挙を非常によく説明しています。通常のクラスと違いはありません。別の方法を使用して、属性を持ついくつかのオブジェクトを作成するだけです。これには、属性を持つそのようなコンストラクターも必要であり、それだけです。
列挙の機能の一部は次のとおりです。
1.パブリックコンストラクターを持つことはできません。そうすることで、クライアントコードが新しいインスタンスを作成できないことを確認できます。
2.列挙は、デフォルトでjava.lang.enumを継承するため、他のクラスを継承することはできません。
3.一定の値アドレスは一意であり、==を使用して直接比較すると、パフォーマンスが向上します。
4. enumは、すべての列挙値を簡単に通過できる値メソッドも提供します。
5.列挙には、列挙クラスの列挙値の順序を返すOridinalメソッドもあります。これは、列挙値宣言の順序に依存します。
3。列挙の一般的な使用
最初のタイプ:スイッチアプリケーション
最初に列挙を作成します:
public enum common {挿入、変更、削除、削除} //これはパラメーターのないオブジェクトであるため、システムのデフォルトコンストラクターを使用できます。属性とメソッドを記述する必要はありません。実装コードを作成します
public class commonutils {public static void getType(common common){common c = common; switch(c){case insert:system.out.println( "inserts操作");壊す;ケース変更:System.out.println( "configure操作");壊す;ケース削除:system.out.println( "操作の削除");壊す; }} public static void main(string [] args){getType(common.delete); //背景出力:操作を削除}}2番目の使用法は、キー値を介して値値を取得して他の値を取得することです
列挙クラス
パブリックエインムシーズン{春(1、「春」、「春に飛んでいる」)、夏(2、「夏」、「夏の水泳」)、秋(3、「秋」、「秋の秋」)、冬(4、「冬」、「冬」季節(intコード、文字列名、文字列bz)パブリティシーズン(season = season.values){season = type;テストクラス
さて、私はそんなに書きます、そして、私は将来それを必要とするならば、もっと詳細に知るようになります。 wulin.comへのご支援ありがとうございます。