javaエニュメレーション類の構造関数の実例について詳しく説明します。


javaエニュメレーション類の構造関数の実例について詳しく説明します。
まず、次の例を示します。

enum AccountType
{
  SAVING, FIXED, CURRENT;
  private AccountType()
  {
    System.out.println(“It is a account type”);
  }
}
class EnumOne
{
  public static void main(String[]args)
  {
    System.out.println(AccountType.FIXED);
  }
}

Terminal出力:

It is a account type
It is a account type
It is a account type
FIXED
分析:
エニュメレート・タイプを作成するには、enumキーワードを使用して、作成されたタイプはすべてJava.lang.Enum類のサブクラスです。エニュメレート・タイプは汎用モードClass Eum<E extends Eum>に適合し、Eはエニュメレート・タイプの名前のそれぞれの値がprotected Eum(String name,int ordinal)構造関数にマッピングされます。
簡単に言えば、エニュメレート・タイプのエニュメレート・値は一回のコンストラクタを呼び出すことに対応しています。本題の中の三つのエニュメレーションの値はここで特に強調されます。
列挙値はデフォルトのstatic(静的なクラス定数)で、各クラスの定数に対して構造関数を追加します。AcceountType.FIXEDはエニュメレーション値を使用していますが、作成されていません。だから全部で3回です。

public class Test {

  public static void main(String[] args) {

    weekday mon = weekday.mon;
    weekday tue = weekday.tue;
    weekday thus = weekday.thus;
    weekday fri = weekday.fri;

  }

  public enum weekday {
    mon(), tue(2), wes(3), thus(), fri;
    private weekday() {
      System.out.println("no args");
    }

    private weekday(int i) {
      System.out.println("have args " + i);
    };
  }
}

Terminal出力:

no args
have args 2
have args 3
no args
no args
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。