序文
毎日のプログラミングでは、多くの場合、そのような「データセット」があり、その値はプログラムで安定しており、「データセット」の要素は限られています。たとえば、月曜日から日曜日までの7つのデータ要素が1週間の「データセット」を形成し、春、夏、秋、冬の4つのデータ要素が4つの季節の「データセット」を形成します。 Javaでこれらの「データセット」をより適切に使用する方法は?したがって、列挙は役立ちます
列挙は実際には、intおよびcharと同様のタイプです。つまり、変数を定義するときに入力を制限します。列挙で指定された値のみを割り当てることができます。
列挙の実装
JDK5は、Java Enumタイプの実装を提供します。これは、新しいタイプよりも構文砂糖です。
パブリックエインムシーズン{春、夏、秋、冬}このコードが逆コンパイルツールを使用してどのように実装されるかを見てみましょう。分解されたコードは次のとおりです。
パブリックファイナルクラスシーズンはenum {public staticシーズン[] VALUES(){return(season [])$ values.clone(); } public staticシーズンValueof(string s){return(season)enum.valueof(season、s); }プライベートシーズン(String S、int i){super(s、i); }パブリック静的な最終シーズンの春。パブリック静的な最終シーズンの夏。パブリック静的な最終シーズン秋。パブリック静的な最終シーズン冬。プライベート静的最終シーズン$ values []; static {spring = new Season( "spring"、0);夏=新しい季節( "夏"、1);秋=新しい季節(「秋」、2);冬=新しい季節(「冬」、3); $ values =(新しい季節[] {春、夏、秋、冬}); }}コードを逆コンパイルすることで、次のように見つけることができます。
1。 Seasonは、 Enumから継承する通常のクラスであり、継承を避けるためにfinalキーワードを介して変更されます。
2。列挙のSPRING 、 SUMMER 、 AUTUMN 、 WINTER Seasonクラスの静的なインスタンスであり、クラスコンストラクター<clinit>メソッドで初期化されています。
3。VALUES values()メソッドは、 <clinit>メソッドでも初期化されているプライベート変数$VALUES[] $VALUES[]のコピーを返します。
列挙の使用方法
1。シングルトンモード
クラスコンストラクター<clinit> 、クラスロードの初期化段階でのみ1つのスレッドで実行できることを知っているため、列挙の各インスタンスはJavaヒープに1つのコピーのみを持っています。この機能により、列挙はシングルトンパターンを簡単に実装できます。これは、Javaの著者であるJosh BlochがSingletonパターンの実装の使用を支持する効果的なものです。
Public Enum Singleton {instance;} 2。スイッチで使用します
3。カスタムフィールドとメソッド
enumsのデフォルトのフィールドとメソッドに加えて、ビジネスロジック用にカスタマイズできます。
public enum enumtest {plus( " +"){@override public int bind(int arg1、int arg2){return arg1 + arg2; }}、sub( " - "){@override public int bind(int arg1、int arg2){return arg1 -arg2; }};最終文字列操作。 enumtest(string操作){this.operation =操作; }要約int bind(int arg1、int arg2);}4。インターフェイスを実装します
インターフェイス操作{int operation(int arg1、int arg2);} public enum enumtest実装{plus( " +"){@override public int operation(int arg1、int arg2){return arg1 + arg2; }}、sub( " - "){@override public int operation(int arg1、int arg2){return arg1 -arg2; }};最終文字列操作。 enumtest(string操作){this.operation =操作; }}実際のアプリケーションでは、「+」と「 - 」はキーとして、プラスおよびサブvalueとして使用でき、 hashMapでハッシュマップで事前に保存できます。特定の使用方法は次のとおりです。
操作操作= hashmap.get( "+"); int result = operation.bind(1、2);
要約します
上記は、Javaの列挙タイプに関するすべてです。この記事によるJavaでの列挙の紹介を通して、誰にとっても役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとってください。