enum(列挙型)とは
列挙型は、複数の定数を1つにまとめてグループ化することができる型のことです。
Javaのenum(列挙型)はフィールドやメソッドを宣言することが可能です。
要点をまとめると以下のとおりになります。
- 列挙定数は、デフォルトで0からの序数が割り当てられる。(配列等で云うIndexみたいなもの)
- 列挙定数のみ宣言する場合は、最後の列挙定数の末尾にセミコロンは付けても付けなくても良い。
- 但し、列挙定数の他にフィールドやメソッドも宣言する場合は、最後の列挙定数の末尾にセミコロンが必須。
- フィールドやメソッドも宣言する場合は、列挙定数はそれらよりも手前に宣言しなければならない。
- 列挙定数は暗黙的にpublic static finalなメンバーとなるため、修飾子を付けることはできない。
- 列挙型自体はアクセス修飾子のみ付けることが可能。
- 列挙型は暗黙的に
java.lang.Enumクラス
を継承しているためクラスを継承(extends)することができない。
但し、インターフェースは実装(implements)することが可能。 - 列挙型はprivate型のコンストラクタしか宣言できない。それ以外の修飾子はコンパイルエラーになる。
enum(列挙型)の書き方
構文
修飾子 enum 型名{ 列挙定数1,列挙定数名2,列挙定数名3;}
列挙定数のみ宣言した例
Java
Java
列挙定数の他にフィールドおよびメソッドを宣言した例
Java
列挙定数よりも先にフィールドやメソッドを宣言した例(コンパイルエラー)
Java
列挙定数名を取得する方法
1.nameメソッドを使用する。
スーパークラスであるEnumクラスが、列挙定数名を文字列として取得するために提供しているname
メソッドを使用する方法です。
Java
2.toStringメソッドを使用する。
同じくスーパークラスであるEnumクラスがオーバーライドしているtoString
メソッドを使用する方法です。
Java
文字列から列挙型インスタンスを取得する方法
文字列から列挙型インスタンスを取得するにはvalueOf
メソッドを使用します。
この動きはコレクションでcontains
メソッドを使うのに似ています。
Java
存在しない文字列を指定した場合は、コンパイルエラーにならず実行時にIllegalArgumentException
が発生します。
Java
実行結果は以下のとおりです。
Java
引数を2つ取るvalueOfメソッド
実はvalueOf
メソッドには引数を2つ取るものがあります。
引数を2つ取るメソッドでは、第1引数に指定したenum型の中に第2引数で指定した列挙定数があればそれを返します。
無ければ実行時にIllegalArgumentException
が発生します。
Java
列挙型の序数を取得する方法
同じくスーパークラスであるEnumクラスが持つordinal
メソッドを使用します。
列挙型の配列を取得する方法
同じくスーパークラスであるEnumクラスが持つvalues
メソッドを使用します。
Java
実行結果は以下のとおりです。
Java
列挙型で定数に任意の値を保持する
定数に任意の値を設定するには定数名(値)
のように記述します。
また、値を取り出すにはゲッターを使用します。
Java
Enumで月を管理する例
Java
実行結果

以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!