Java Enum(列挙型)のサンプル

JavaのEnum(列挙型)のサンプルです。

目次

サンプル Enum(列挙型)とは
  Enum(列挙型)のサンプル
  for文でenumの値を取得する
  列挙型の定数に独自の値を設定する

Enum(列挙型)とは

アクセス修飾子 enum 名前 {
 定数1,
 定数2,
 ・・・
}
  • Enumは複数の定数を持つことができ列挙型と呼ばれます。
  • enumというキーワードがあります。
  • 名前.定数やvalueOfメソッドで値にアクセスできます。
  • Enumクラスを暗黙的に継承しています。→Enumクラスのメソッドを使えます。

 

Enum(列挙型)のサンプル

package test1;

enum Color {
    RED,
    YELLOW,
    BLUE,
}
public class Test1 {
    public static void main(String[] args) {
    	class1.output1(Color.BLUE);
    }
}
class class1 {
	static void output1(Color c1){
    	if(c1 == Color.valueOf("RED")) {
    		System.out.println("赤です");
    		
    	}else if(c1 == Color.valueOf("YELLOW")) {
    		System.out.println("黄です");
    		
    	}else if (c1 == Color.valueOf("BLUE")){
    		System.out.println("青です"); //青ですと出力される
    	}
	}
}

3行目にenumがあります。列挙型です。
4行目からの定数はカンマ区切りで記述します。
6行目のように定義の最後にカンマが付いていても問題ありません。

10行目は、メソッドの引数に列挙型の値を指定しています。
14行目は、列挙型の値を引数として受け取ります。
15行目以降は、if文で列挙型の定数の比較をしています。

以下はJava8 API仕様のEnumクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Enum.html

 

for文でenumの値を取得する

for文でenumの値を取得するサンプルです。

package test1;

enum Color {
    RED,
    YELLOW,
    BLUE,
}
public class Test1 {
    public static void main(String[] args) {
    	
        for (Color t : Color.values()) {
            System.out.println(t.toString()); // RED YELLOW BLUE   
            System.out.println(t.ordinal()); // 0 1 2
        }
    }
}

3~7行目は、列挙型です。
11行目は、for文です。values(※)メソッドは、すべての列挙型の定数を取得します。
12行目は、toStringメソッドで列挙型の名前を取得しています。
13行目は、ordinalメソッドで列挙型の位置を取得しています。位置は0から始まります。

(※)valuesは、暗黙(implicit)のメソッドです。以下はEnumクラスのコメントです。
All the constants of an enum type can be obtained by calling the implicit {@code public static T[] values()} method of that type.

 

列挙型の定数に独自の値を設定する

列挙型の定数に独自の値を設定できます。

package test1;

public enum Colors {
    RED(10),
    YELLOW(11),
    BLUE(12);
    
    private int num1;
    
    private Colors(int num){
        this.num1 = num;
    }
    public int getNum1(){
        return num1;
    }
}

4~6行目の10,11,12が独自の値です。
8行目は、フィールドで、10行目は、コンストラクタです。

このenumが呼ばれた最初の1回目は、4行目(10)→11行目(セット)→5行目(11)→11行目(セット)→6行目(12)→11行目(セット)という動きで8行目のnum1に数値がセットされます。
3つのインスタンスが生成されるイメージです。

 

上記の列挙型にアクセスするコード

上記の列挙型にアクセスするサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

        System.out.println(Colors.RED.getNum1()); // 10
        System.out.println(Colors.YELLOW.getNum1()); // 11
        System.out.println(Colors.BLUE.getNum1()); // 12
    }
}

6~8行目は列挙型に設定した値を取得しています。

関連の記事

Java if文 条件分岐を行うサンプル
Java switch文 条件分岐を行うサンプル

△上に戻る