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

Guanhui
リリース: 2020-07-18 17:35:25
転載
3177 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート