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行目は列挙型に設定した値を取得しています。
関連の記事