【Java入門】Enumの基本的な使い方

こんにちは、まさきです。
今回はJavaの列挙型と言われるEnumについて説明していきます。

スポンサーリンク

Enumクラスとは

Enumとは別名『列挙型』と言い、オブジェクトをいくつかまとめたクラス扱うことができます。

例えば、FruitクラスとしてApple、Orange、Grapeという変数を列挙できます。
列挙型を使うことで定数として扱う変数をクラスとしてさらにまとめられたり、その中で共通の処理を実装することができます。

これにより、例えばユーザーの好きな果物を選択するセレクトボックスがあったとすると、その選択肢はFruitクラスから取得するような作りにすることで保守性を高めたり、新しい値を追加するときもFruitクラスに追加するなどメンテナンスしやすくなります。

Enumの実装方法

最低限の実装では以下のように記載します。

public enum Fruit {
    APPLE,ORANGE,GRAPE
}

まずenumを指定し、クラス名を記載します。
その後列挙したいオブジェクトをカンマで区切って記載します。

呼び出す場合はこのようにクラス名.列挙名とします。

public class Main {
    public static void main(String[] args) {
        System.out.print(Fruit.ORANGE);
    }
}

列挙型のメソッド

列挙型に用意されているメソッドもあります。
これらは列挙型を定義すると使えるようになります。

メソッド名説明
String toString()enum定数名の文字列を返す。
boolean equals(Object obj)指定されたオブジェクトがこのenum定数と同じ場合はtrueを返す。
int hashCode()enum定数のハッシュコードを返す。
String name()enum定数名の文字列を返す。
int ordinal()列挙宣言の順番を返す。

気づいた方もいるかと思いますが、上の3つはObjectクラスと同じですよね!
toStringとequalsとhashCodeメソッドはオーバーライドが可能です。

またEnumクラスで使えるメソッドはこちらです。

メソッド名説明
static 列挙型[] values()列挙した定数の全てを配列で返す。
static 列挙型 valueOf(String name)引数で指定した名前をもつ値を返す。

Fruitクラスを例にすると以下のような結果になります。

public class Main {
    public static void main(String[] args) {
        System.out.println(Fruit.ORANGE.toString());        //ORANGE
        System.out.println(Fruit.ORANGE.equals("ORANGE"));  //false
        System.out.println(Fruit.ORANGE.hashCode());        //460141958
        System.out.println(Fruit.ORANGE.name());            //ORANGE
        System.out.println(Fruit.ORANGE.ordinal());         //1
        System.out.println(Fruit.values());                 //[LFruit;@4554617c
        System.out.println(Fruit.valueOf("ORANGE"));        //ORANGE
    }
}

スポンサーリンク
Java
スポンサーリンク
この記事を書いた人

フリーランスエンジニアです。
未経験からSIer企業に入社して開発案件でプログラミングを学び27歳でフリーランスになりました。
主にHTML,CSS,JavaScript,Javaを書いています。
本を読むことが好きなのでIT以外にもいろいろ読んでいます。
好奇心旺盛でとりあえずやってみる精神。
楽しいことが生きがいで、仕事も私生活も楽しくなるように日々奮闘中。
お酒を飲みすぎないことが目標

まさきをフォローする
シェアする
まさきのエンジニア図書館
タイトルとURLをコピーしました