Javaでenumを使って列挙型を利用する方法【初心者向け】

初心者向けにJavaで書くenumを使った列挙型の使い方について解説。enumの書き方から実際に書いてみたサンプルを紹介しながら説明しています。Javaエンジニアを目指している人は今のうちに覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回はJavaでのenumを解説します。

enumは列挙型と言われるもので、Javaだけでなく、C言語にも存在しています。ですが、Javaのenumはいろいろなものに用いることができます。まずは基礎的な使い方をご紹介します。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説している記事をまずご覧ください。

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

なお、今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

田島悠介

ここではenum、列挙型についての勉強をしていこう。

大石ゆかり

田島メンター!!列挙型というのは何ですか~?

田島悠介

複数の定数をひとつにまとめておくことができる型だよ。うまく使うことで定数の扱いがしやすくなるんだ。簡単な例で見てみよう。

大石ゆかり

分かりました!

 

enumの書き方

enumは先に述べたように列挙型と呼ばれています。

Javaにおけるenumの宣言は以下のようになります。

public enum animal{
  Dog,
  Cat,
  Mouse,
  Moncky
}

さて、上記サンプルコードではenumを使って宣言しています。

列挙型名は「animal」、列挙定数は「Dog」などにあたります。 enumは普通は上記のような書き方ですべてですが、Javaでは様々なオプションを加えることでenumを使うことができます。 上記サンプルコードを使えるように書き直しましょう。 以下のようにソースコードを書いてください。

public class enum_sample{
  public enum animal{
    Dog,
    Cat,
    Mouse,
    Monkey
}
public static void main(String[] args){
  animal creature animal.Dog;
    switch(creature){
      case Dog: System.out.println("dog!"); break;
      case Cat: System.out.println("cat!"); break;
      case Mouse: System.out.println("mouse!"); break;
      case Monkey: System.out.println("monkey!"); break;
    }
  }
}

実行結果

dog!

実行した際dog!と表示されます。 Javaではswicth文に列挙型が使用可能です。

animalのcreature に animalのDogを参照して渡しているのでcase Dogに入ります。 それ故にdog!が表示されました。 これがenum列挙型というものです。

 

田島悠介

まとめる定数は上のように、同じカテゴリに属するものを入れる感じだね。

大石ゆかり

今回だと動物ですね。列挙型名も自由に付けられるんですか?

田島悠介

そうだね。なので自分で分かりやすい名前にするのがいいと思うよ。

 

enumの名称定義

enumが列挙型という事で、フィールド変数やメソッドの定義が可能です。 以下にフィールド変数を定義したコードを用意しました。

public class enum_sample{
  public enum animal{
    Dog("犬"),
    Cat("猫"),
    Mouse("鼠"),
    Monkey("猿");

  private String label;

  animal(String label){
    this.label = label;
  }
  public String getlabel(){
    return this.label;
  }
  public static void main(String[] args){
    for(animal creature : animal.values()){
      System.out.println("[" + creature.ordinal() + "]" + creature.name() + "," + creature.getlabel());
    }
  }
}

実行結果

[0]Dog,犬

[1]Cat,猫

[2]Mouse,鼠

[3]Monkey,猿

列挙定数は何個目の列挙定数なのかを表す「ordinal」、定数名を表す「name」もあらかじめ定義されています。 サンプル3コードを見ればわかるように、「ordinal」はユーザーが定義していないにも関わらず、番号がついています。

これより、enumは列挙定数に0から順番に番号がついているということが分かります。 「name」は自分がつけた定数名です。DogやCatといった部分です。enumの本体ともいえるでしょう。

また、getlabelというメソッドも定義できており、これが、this(animal)のlabelの値をそれぞれ返却していることが分かります。labelの値は Main文ではanimalのcreatureを作成して、それの「ordinal」、「name」、「label(getlabelメソッド)」を参照してコンソール画面に描写します。

 

[PR] Javaで挫折しない学習方法を動画で公開中

まとめ

今回はenumのJava特有の使い方を紹介しました。

しかし、これだけでなく、Javaのenumは型であることから、様々なプロパティ値を持つことができます。

今回は初歩的な使い方がメインでしたが、enumの可能性はまだまだ底が見えません。C言語などのほかの言語を扱ったことがある人はもちろんのこと、Javaから始めた人も多くの可能性をenumから感じられたのではないでしょうか。

 

田島悠介

enumを活用するとコードが見やすくなるし、間違った値を入れることを防ぐこともできるんだ。

大石ゆかり

便利な機能なんですね。

田島悠介

種類や数がはっきりしている定数に関しては、できるだけenumを使うことを検討してみよう。

大石ゆかり

少しずつ練習してみます。ありがとうございました!

 

また、Javaの学習サイトもまとめているので、合わせてご覧ください。

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。