工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java Enum完全ガイド:列挙型とEnumクラスの活用法

Java Enum

このチュートリアルでは、Javaのenumについて学びます。例を用いてenumとenumクラスの作成と使用方法を学びます。

Javaにおいて、enum(enumerationの略)は固定された定数値のセットを持つ型です。enumキーワードで宣言します。例えば、

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }

ここでは、Sizeというenumを作成しました。これには固定値SMALL、MEDIUM、LARGE、EXTRALARGEが含まれます。

波括弧内のこれらの値はenum定数(値)と呼ばれます。

注意: enum定数は通常大文字で表記されます。


例1:Java Enum

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } class Main { public static void main(String[] args) { System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); } }

出力**

 SMALL MEDIUM

上記例からわかるように、enum名を使って定数値にアクセスします。

また、enum型の変数を作成できます。例えば、

 Size pizzaSize;

ここでは、pizzaSizeはSize型の変数です。4つの値のみ代入可能です。

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

例2:switch文でのJava Enum

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } class Test { Size pizzaSize; public Test(Size pizzaSize) { this.pizzaSize = pizzaSize; } public void orderPizza() { switch(pizzaSize) { case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; } } } class Main { public static void main(String[] args) { Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); } }

出力**

 I ordered a medium size pizza.

上記プログラムでは、enum型Sizeを作成し、Size型の変数pizzaSizeを宣言しました。

ここでは、変数pizzaSizeは4つの値(SMALL、MEDIUM、LARGE、EXTRALARGE)のみ代入可能です。

以下の文に注目:

 Test t1 = new Test(Size.MEDIUM);

これはTestクラス内のTest()コンストラクタを呼び出します。変数pizzaSizeにMEDIUM定数が代入されます。

値に基づいて、switch文の該当ケースが実行されます。


JavaのEnumクラス

Javaでは、enum型は特別な種類のクラスと見なされます。Java 5で導入されました。

Enumクラスには、通常のクラスと同様にメソッドとフィールドを含められます。

 enum Size { constant1, constant2, …, constantN; // メソッドとフィールド }

enumクラスを作成すると、コンパイラは各enum定数のインスタンス(オブジェクト)を作成します。また、すべてのenum定数はデフォルトでpublic static finalです。


例3:Java Enumクラス

 enum Size{ SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() { // thisはSMALLオブジェクトを参照 switch(this) { case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; } } public static void main(String[] args) { // getSize()を呼び出し // SMALLオブジェクトを使用 System.out.println("The size of the pizza is " + Size.SMALL.getSize()); } }

出力**

 The size of the pizza is small

上記例では、enumクラスSizeを作成しました。4つの定数SMALL、MEDIUM、LARGE、EXTRALARGEを持ちます。

Sizeがenumクラスであるため、コンパイラは各enum定数のインスタンスを自動作成します。

main()メソッド内で、インスタンスSMALLを使ってgetSize()メソッドを呼び出しています。

注意: 通常のクラスと同様に、enumクラスもコンストラクタを含められます。詳細はJava enum constructorを参照。


Java Enumクラスのメソッド

enumクラスにはすぐに使える定義済みメソッドがあります。

1. Java Enum ordinal()

ordinal()メソッドはenum定数の位置を返します。例えば、

 ordinal(SMALL) // returns 0

2. Enum compareTo()

compareTo()メソッドは序数値に基づいてenum定数を比較します。例えば、

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString()

toString()メソッドはenum定数の文字列表現を返します。例えば、

 SMALL.toString() // returns "SMALL"

4. Enum name()

name()メソッドはenum定数の定義名を文字列で返します。name()から返される値はfinalです。例えば、

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf()

valueOf()メソッドは文字列を受け取り、同じ文字列名を持つenum定数を返します。例えば、

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

values()メソッドは、すべてのenum定数を含むenum型の配列を返します。例えば、

 Size[] enumArray = Size.value();

なぜJava Enumなのか?

Javaでenumが導入されたのは、int定数の使用を置き換えるためです。

int定数のコレクションを使用していたとします。

 class Size { public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; }

ここで、定数を出力すると問題が生じます。数値のみが出力され、役に立たない可能性があるためです。

代わりにenumを使えばシンプルです。例えば、

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }

これによりコードがより直感的になります。

また、enumはコンパイル時型安全性を提供します。

Size型の変数を宣言すると、例えば、

 Size size;

ここでは、変数が4つの値のいずれかを保持することが保証されます。それ以外の値を渡そうとするとコンパイラがエラーを出します。

Java

  1. C言語 列挙型(Enum)マスター: 定義・宣言・フラグ操作
  2. Java演算子をマスター:種類、構文、実践例
  3. Javaコメント:種類、使い方、ベストプラクティス
  4. Java拡張forループをマスター:構文、例、ベストプラクティス
  5. Java文字列をマスター:生成、メソッド、ベストプラクティス
  6. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  7. Java無名インナークラス完全ガイド:定義、構文、実践例
  8. Java Enum完全ガイド:列挙型とEnumクラスの活用法
  9. Java Enumコンストラクタ徹底解説:実践例で理解する
  10. Java Enumの文字列表現マスター:デフォルト、オーバーライド、高度なパターン
  11. Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法