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

  1. FEnetJava
  2. Javaコラム
  3. Java TIPS
  4. Javaの定数Enumの使い方とは?基本の使い方3つとメリット5つ

Javaの定数Enumの使い方とは?基本の使い方3つとメリット5つ

  • Java TIPS
公開日時:   更新日時:
Javaの定数Enumの使い方とは?基本の使い方3つとメリット5つ
この記事でわかること
    システム
    エンジニア
    JavaのEnumとはどういうときに使うのでしょうか。
    プロジェクト
    マネージャー
    オブジェクトを宣言したり、名称の定義ができたり、Enum同士を比較したりするときに定数Enumを使います。

    Javaとは?


    Javaとはクラスベースのオブジェクト指向のプログラミング言語です。元々はサン・マイクロシステムズという企業で開発・運用されていましたが、後にOracleに買収されました。
    近年ではJavaScriptやPythonといったプログラミング言語の人気が上昇していますが、それでもノートPCや携帯電話(スマホ)、科学計算用スーパーコンピュータなど多くのデバイスで利用され続けています。
    特に近年ではスマホアプリや、勘定系の業務アプリケーションの構築で使用されています。今回はこのJavaにおける定数クラスEnumの使い方を紹介します。

    Enumとは?


    今まで定数を宣言するのには数値型が用いられてきました。しかし数値型の定数には管理が煩雑になったり、同じ1という値に違う意味が混在したりといったデメリットがありました。
    こういったデメリットを解消できるのがEnumです。Javaではバージョン5からEnumが使用できます(現在の最新バージョンは14)。
    JavaのEnumはクラスとして宣言します。使い方は後述しますがclass識別子ではなくenum識別子を用います。Enumクラスには任意のメソッドやフィールドを追加したり、任意のインタフェースを実装したりできます。
    ちなみにEnum.classはjava.langパッケージに属しており

    と定義されています。

    Enumの基本的な使い方3つ

    Enumの基本的な使い方である「オブジェクトを宣言する」「名称の定義ができる」「Enum同士を比較する」を順に説明していきます。実際のソースコードも載せているので合わせてご確認ください。

    使い方1:オブジェクトを宣言する


    Javaでの使い方は、オブジェクトの宣言は通常のクラス宣言をするようにEnum識別子で宣言します(class識別子は使用しません)。ここではCardというEnumを宣言しています。

    使い方2:名称の定義ができる

    名称の定義はJavaのクラス名と同様に任意の名称をつけることができます。定数というと、intといった数値型が基本となりますが、Enumはそれに縛られません。ここではカードのEnumとしてHEART, DIAMOND, SPADE, CLUBという名称で定義します。

    使い方3:Enum同士を比較する


    JavaでのEnum同士を比較する使い方を以下のif文とswitch文で紹介します。それぞれ実際のソースコードで使い方を見てください。いずれもintやStringのように扱うことができます。

    if文

    Javaでのif文を使ったEnum同士の比較は以下のようになります。

    switch文

    Javaでの>switch文を使ったEnum同士の比較は以下のようになります。

    Enumの2つのメソッドの使い方

    Enumクラスが持つ2つのメソッドの使い方について説明します。valuesメソッドとvalueOfメソッドです。
    この2つのメソッドはEnum定数では必ず付与されます。

    メソッド1:values

    valuesは定義したEnumをすべて返すメソッドです。

    上のコードのような使い方で以下の出力を得られます。

    メソッド2:valueOf

    valueOfは指定された名前を持つ指定されたEnum型のEnum定数を返すメソッドです。

    上のコードのような使い方で以下の出力を得られます。

    Javaの定数Enumを使うメリット5つ

    Javaの定数Enumにはメリットがいくつかあります。
    その内5つの「1つの定数に複数定義できる」「複数の定数を1つの型で管理できる」「定数を管理しやすい」「安全性が高い」「出力情報に意味を持たせる」を紹介します。

    メリット1:1つの定数に複数定義できる


    今までの使い方で見てきたように、JavaではEnumを使うことで1つの定数に複数の定義をすることができます。CardというEnumの例ではHEART,DIAMOND,SPADE,CLUBを定義しました。

    メリット2:複数の定数を1つの型で管理できる


    JavaではEnumを使わない定数ではintなどの数値型が使われることが多いです。その場合、1つのクラスに全ての定数を定義したりと、管理が煩雑になります。Enumの使い方を適切に行えば定数を意味のあるまとまりごとに1つの型で管理することができます。

    メリット3:定数を管理しやすい


    メリット2でも紹介しましたが、JavaでのEnumでも意味のあるまとまりごとに管理できるため特定の項目に分けて管理することができます。前述してきた使い方をすることで値の重複定義なども事前に防ぐことができます。

    メリット4:安全性が高い


    EnumはJavaのclassのように宣言して取り扱います。これによりJavaのコンパイラによって異なるEnum(型)同士の比較は事前にエラーとして判別できるようになっています。
    また IntelliJやNetBeansといったJavaのIDEAを使うことでコード補完の恩恵も受けることができます。このためint型などの定数と比べて安全性が高い開発をすることができます。

    メリット5:出力情報に意味を持たせる


    旧来のint型の定数では出力してもただの数値が表示されるだけです。このような使い方では「処理結果:1」と出力されてもその意味を知る人でなければ成功したのか失敗したのか読み取れません。
    しかしEnumであれば定数に意味を持たせることができます。例えばSUCCESS、FAILといったように定義することができます。

    システム
    エンジニア
    Enumにはいろいろなメリットがあるのですね。
    プロジェクト
    マネージャー
    そうですね。JavaのEnumのメリットをよく理解してぜひ使ってみてください。

    Javaの定数Enumを使ってみよう

    Javaの定数Enumの使い方とそのメリットをご紹介しました。管理面や安全性のことなど、1人で開発する中では気にしない部分も多かったのではないでしょうか。
    最後にちょっとしたトピックですがJavaのEnumは内部的にordinal()というメソッドを持ちます。これは列挙定数の位置順(初期定数はゼロ)を返します。例えばこの記事で紹介したCardの場合は以下のようになります。

    内部的には宣言した順に位置情報を持っているのだと覚えておくと今後の理解が深まるかもしれません。
    もし今までEnumの使い方を知らなかった、使い方は知っていたがうまく利用できていなかった方は今日からでもぜひ使ってみてください。

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

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

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

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

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

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

    • 充実した研修制度

      充実した研修制度

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

    • 資格取得を応援

      資格取得を応援

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

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

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

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

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

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

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

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

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

    Java新着案件New Job