enumタイプを定義する場合、本質的にクラスを定義しますが、多くの詳細はコンパイラによって満たされているため、列挙キーワードの役割はクラスまたはインターフェイスのようなものです。
「enum」を使用してenumタイプを定義する場合、定義するタイプは基本的にjava.lang.enumクラスから継承され、各enumのメンバーは実際に定義する列挙型のインスタンスです。それらはすべて最終的にデフォルトであるため、それらを変更することはできず、静的メンバーでもあるため、タイプ名を介して直接使用できます。もちろん、最も重要なことは、すべてが公開されています。
例えば:
opconstants.javapublic enum opconstants {turn_left、turn_right、shoot}この例では、opConstantsはjava.lang.enumから継承します。 turn_left、turn_right、shootなどの各酵素メンバー。これらはすべて、opconstantsのオブジェクトインスタンス、つまりオブジェクトインスタンスです。当然、上にいくつかの方法があります。たとえば、toString()メソッドが上書きされているため、列挙値の文字列説明を直接取得できます。 enumオブジェクトによって定義された値()メソッドを使用すると、すべての列挙インスタンスを取得して配列に渡すことができます。これらの2つの方法を使用して、OpConstantsのコンテンツを単純に表示します。
showenum.javapublic class showenum {public static void main(string [] args){for(opconstants constant:opconstants.values()){system.out.println(constry.tostring()); }}}基本的に、println()はtoString()を自動的に呼び出すため、実際にはtoString()を記述しないことは問題ありません。実行結果は次のとおりです。
turn_leftturn_rightshoot
「==」またはequals()メソッドを使用して、列挙オブジェクトを比較できます。 "" == ""は、提供する列挙オブジェクトが同じであるか(つまり、同じメモリの位置を占める)かどうかを比較しますが、equalsは本質的に2つの列挙オブジェクトの内容を比較します。デフォルトでは、列挙の文字列値に基づいて比較されます。
valueof()メソッドを使用すると、指定された文字列を列挙インスタンスに変換しようとすることができます。 CompareTo()メソッドを使用できます。これは、列挙時に2つの列挙オブジェクトの順序を比較できます。これが例です
showenum.javapublic class showenum {public static void main(string [] args){enumcompareto(opconstants.valueof(args [0])); } public static void enumcompareto(opconstants constant){system.out.println(constant); for(opconstants c:opconstants.values()){system.out.println(curntion.compareto(c)); }}}実行結果:
$ java showenum turn_right
turn_right10-1
順序が示された後、列挙オブジェクトが比較される前に順序が比較される前であることを示し、0は2つの相互に比較される列挙値の位置が同じであることを意味します。
各列挙メンバーについて、edinal()メソッドを使用して列挙順に位置インデックスを取得できます。デフォルトは0から始まります。たとえば、:
showenum.javapublic class showenum {public static void main(string [] args){for(opconstants c:opconstants.values()){system.out.printf( "%d%s%n"、c.ordinal()、c); }}}実行結果:
0 turn_left1 turn_right2シュート
enumキーワードを使用してenumクラスを定義でき、関連する定数をクラスに記述できます。以下の例を見てみましょう。
次のコード:
class testclass {private testclass(){} //プライベートコンストラクターを定義し、外部からオブジェクトをインスタンス化することはできません// 2つのインスタンスAおよびBパブリック最終テストクラスa = new testclass(); public static final testclass b = new testclass();}代わりにenumタイプを使用できます。
enum testclass01 {a、b;}使用法:
列挙には、コンストラクター、フィールド、メソッドがあります。
enum testclass02 {a( "a")//オブジェクトを作成する場合、コンストラクターパラメーターに渡す、b( "b");プライベート文字列値。 private testclass02(string value){this.value = value; } public string getValue(){return this.value; }}列挙には抽象的な方法もあります。
enum testclass03 {a(){//抽象メソッドpublic void type(){system.out.println( "qualcent"); }}、b(){public void type(){system.out.println( "good"); }};パブリックアブストラクトボイドタイプ(); //抽象メソッドを定義}テスト方法:
public class test02 {public static void main(string [] args){print(testclass02.a); // enumパラメーターで一時停止} public static void print(testclass02 t){system.out.println(t.getValue()); } enum testclass02 {a( "a")、b( "b");プライベート文字列値。 private testclass02(string value){this.value = value; } public string getValue(){return this.value; }}}実行結果:
aauthor:start sign:あなたがまだしようとしている限り、それは失敗ではありません。