ホームページ  >  記事  >  Java  >  JAVA列挙型(enum)の詳しい説明

JAVA列挙型(enum)の詳しい説明

Guanhui
Guanhui転載
2020-07-18 17:35:253156ブラウズ

JAVA列挙型(enum)の詳しい説明

Java 列挙型は、一般に、1 年の 4 つの季節、1 年の 12 か月、1 週間の 7 日、および南東、北西などの方向。

Java 列挙クラスは enum キーワードを使用して定義され、各定数はカンマで区切られます。

たとえば、色の列挙クラスを定義します。

enum Color 
{ 
  RED, GREEN, BLUE; 
}

上記の列挙クラス Color の色定数には、それぞれ赤、緑、青を表す RED、GREEN、BLUE が含まれます。

使用例:

enum Color
{
  RED, GREEN, BLUE;
}
 
public class Test
{
  // 执行输出结果
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
  }
}

上記のコードを実行した出力結果は次のとおりです:

RED

列挙型を使用します。内部クラスの例

列挙型クラスは内部クラスでも宣言できます:

public class Test
{
  enum Color
  {
    RED, GREEN, BLUE;
  }
 
  // 执行输出结果
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
  }
}

上記のコードを実行した出力結果は次のとおりです:

RED

各列挙はクラスを通じて内部的に実装され、すべての列挙値は public static Final です。

上記の列挙型クラスの色変換は内部クラスに実装されています:

class Color
{
   public static final Color RED = new Color();
   public static final Color BLUE = new Color();
   public static final Color GREEN = new Color();
}

列挙型要素を反復します

for ステートメントを使用して反復できます。列挙要素:

enum Color
{
  RED, GREEN, BLUE;
}
public class MyClass {
 public static void main(String[] args) {
  for (Color myVar : Color.values()) {
   System.out.println(myVar);
  }
 }
}

上記のコードを実行した出力結果は次のとおりです:

RED
GREEN
BLUE

# #switch で列挙を使用する 列挙クラス

列挙クラスは switch ステートメントでよく使用されます:

enum Color
{
  RED, GREEN, BLUE;
}
public class MyClass {
 public static void main(String[] args) {
  Color myVar = Color.BLUE;

  switch(myVar) {
   case RED:
    System.out.println("红色");
    break;
   case GREEN:
     System.out.println("绿色");
    break;
   case BLUE:
    System.out.println("蓝色");
    break;
  }
 }
}

上記のコードを実行した出力結果は次のとおりです:

Blue

values()、ordinal()、および valueOf() メソッド

enum によって定義された列挙クラスは、java.lang.Enum クラスを継承します。デフォルトでは java を実装しており、lang.Seriablizable と java.lang.Comparable の 2 つのインターフェイスがあります。

values()、ordinal()、および valueOf() メソッドは java.lang.Enum クラスにあります。

    values() は列挙クラス内のすべての値を返します。 。
  • ordinal() メソッドは、配列インデックスと同様に、各列挙定数のインデックスを見つけることができます。
  • valueOf() メソッドは、指定された文字列値の列挙定数を返します。
  • enum Color
    {
      RED, GREEN, BLUE;
    }
     
    public class Test
    {
      public static void main(String[] args)
      {
        // 调用 values()
        Color arr[] = Color.values();
     
        // 迭代枚举
        for (Color col : arr)
        {
          // 查看索引
          System.out.println(col + " at index " + col.ordinal());
        }
     
        // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
        // System.out.println(Color.valueOf("WHITE"));
      }
    }
上記のコードを実行した出力結果は次のとおりです。

RED インデックス 0

GREEN インデックス 1
BLUE インデックス 2
RED

列挙型クラスのメンバー

通常のクラスと同様、列挙型でも独自の変数、メソッド、コンストラクターを使用できます。コンストラクターはプライベート アクセス修飾子のみを使用できます。したがって、外部から呼び出すことはできません。

列挙には、具象メソッドと抽象メソッドの両方を含めることができます。列挙型クラスに抽象メソッドがある場合、列挙型クラスのすべてのインスタンスはそれを実装する必要があります。

enum Color
{
  RED, GREEN, BLUE;
 
  // 构造函数
  private Color()
  {
    System.out.println("Constructor called for : " + this.toString());
  }
 
  public void colorInfo()
  {
    System.out.println("Universal Color");
  }
}
 
public class Test
{  
  // 输出
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
    c1.colorInfo();
  }
}

上記のコードを実行した出力結果は次のとおりです。

呼び出されたコンストラクター : RED

呼び出されたコンストラクター : GREEN
呼び出されたコンストラクター : BLUE
RED
Universal Color

推奨チュートリアル: 「

Java チュートリアル

以上がJAVA列挙型(enum)の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。