Javaエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnetJava
  2. Javaコラム
  3. Java TIPS
  4. Javaのenumとは?基本から便利な使い方まで解説

Javaのenumとは?基本から便利な使い方まで解説

  • Java TIPS
公開日時:   更新日時:
Javaのenumとは?基本から便利な使い方まで解説
この記事でわかること

    システム
    エンジニア
    Javaのenumとは、どのようなものなのでしょうか?

    プロジェクト
    マネージャー
    Javaの定数を一覧のように列挙することでenumと定義されます。

    enumとは?


    enumとは列挙型と呼ばれるJavaの機能の一つです。プログラム実行中に変更されることのない値を定数と表現できますが、Javaでは定数を一覧のように列挙することでenumとして定義することができます。言葉で説明するだけではわかりにくいと思うので、サンプルプログラムを用意しました。

    チームメンバーをイメージしたenumです。3名のメンバーが列挙されています。このプログラムを実行すると標準出力に「YAMADA」と出力されます。Javaのenumは、このようにカンマ区切りで制限なく定数を列挙して宣言することができ、スコープの範囲内であれば自由に呼び出すことができます。

    switch文でも型の恩恵を得られる

    Javaのenumは以下のサンプルプログラムのようにswitch文に使用することもできます。このプログラムは、実行すると標準出力に「山田」と出力されます。スッキリ書けることはもちろん、Stringとは異なり予めenumとして定義した値のみcaseに書くことができるので、タイプミスなどのヒューマンエラーを防げることが強みです。

    各標準メソッドの使い方をチェック

    Javaのenumの基底クラスはEnumという抽象クラスです。このクラスには一般的なenumでよく使われるメソッドが標準で用意されています。これらのメソッドは、一見地味ながらも使いどころの多い便利なものです。使い方をチェックしていきましょう。

    nameメソッド

    nameメソッドはenumの名前をStringで返すメソッドです。下記のサンプルコードなら「YAMADA」と出力されます。このメソッドはあくまでenumの名前を返すメソッドなので、プログラマフレンドリな文字列を返すメソッドとしてはOverrideすることが可能なtoStringを使用しましょう。

    ordinalメソッド

    ordinalメソッドはそのenumの列挙宣言での位置をintで返します。最初に列挙されたenumの位置は0であることに注意が必要です。宣言の順番に意味があるときに使用できますが、多くの場合、後述するフィールドの設定を用いた方が信頼性の高いコードを書くことができます。このメソッドはEnumSetやEnumMapなどのenumベースのデータ構造を用いるときに使用すると良いでしょう。

    compareToメソッド

    compareToメソッドは引数に指定されたオブジェクトと比較を行うメソッドです。enumが指定されたオブジェクトよりも小さい場合は負の整数、同じ場合は0、大きい場合は正の整数を返します。この時の大小の比較はenumの宣言の順番をもとに行われます。

    valueOfメソッド

    valueOfメソッドは引数に指定された名前のenumを返すメソッドです。この後説明するvaluesメソッドと合わせて使用することでenumの名前とenumのマッピングを行うことができます。

    valuesメソッド

    valuesメソッドは、enumのすべての定数を宣言順に並べた配列を返します。以下のようにenumを宣言した順にループさせることができ、valueOfメソッドの説明で触れたようにenumの名前とenumのマッピングを行うときによく使用されます。

    enumもクラス!メンバをフル活用してもっと便利に

    一見するとenumはクラスとは別のものに見えるかもしれませんが、先ほども少し触れたとおり、JavaのenumはすべてEnumという抽象クラスを継承したものなのです。つまり、enumもJavaのクラスの1つです。一般的なクラスと同じように、メンバを定義することができます。サンプルプログラムとともに詳しく見ていきましょう。

    フィールドやメソッドを定義してみよう

    下記のサンプルプログラムでは、今まで扱ってきたTeamMemberにnameというフィールドを定義しています。このようにprivateなコンストラクタを用いてフィールドに値を設定できます。また、一般的なクラスと同じ記法でメソッドを定義することもでき、サンプルプログラムではgetNameメソッドを定義しています。このように、enumにメンバを定義することで、より便利にenumを使うことができます。

    システム
    エンジニア
    enumもJavaのクラスのひとつなのですね。

    プロジェクト
    マネージャー
    そうですね。基本的な使い方から徐々にマスターしていきましょう!

    enumを積極的に使ってみよう

    enumの使い方について理解できたでしょうか。まずは数十以内の定数群をenumとして定義して、標準メソッドだけでも積極的に使ってみましょう。コードの品質が上がることを実感できるはずです。慣れてきて自然にenumのフィールドやメソッドを活用できるようになったなら、enumの使い方はしっかりおさえられたと言えます。ぜひ、チャレンジしてみてください。

    FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Java新着案件New Job