Java

【初心者向け】JavaのEnum型について解説!基本的なメソッドも紹介!

「JavaのEnumの使い方がよくわからない。列挙型ってそもそもどういうものなの? 誰か教えてほしい」

本記事ではこのような悩みを解決します。

Enum型はJava独特のものであり、理解しにくいものの1つでもあります。しかしEnum型がわからないと、Javaでアプリケーションを作成するときに苦労する部分が出てきてしまうでしょう。

そこで本記事ではEnum型について初心者でもわかるように解説していきます。
Enum型の作成方法、データの操作方法をひと通り説明していきます。本記事を読むことでEnum型の基礎がしっかり押さえられるようになっていますよ。

Java初心者の方はぜひこの機会にEnum型をマスターしてくださいね。

Enum型とは

Enum型とは、複数の定数をひとまとめにできる型のことです。定数とはあらかじめ決められたデータが入っており、後から変更できないデータのことを指します。値が変更できる「変数」とは違うものなので注意してください。

定数を使うことによって、「これは後から変更することがないデータです」ということを明示することができ、ソースコードが読みやすくなります。ただ、あまりに多くの定数を作ってしまうと、やはり読みにくくやってしまいます。

そこでEnum型を使うことで、同じグループの定数をひとまとめにすることができます。そうすることでソースコードの可読性が一気にアップします。

さらにEnum型は、switch文で扱いやすくなっているというメリットもあります。そのため、Enum型は多くのJavaプログラマーに愛用されています。

このように、複数の定数をひとまとめにできるのがEnum型を使用するメリットです。

Enum型の基本的な使い方

それではEnum型の基本的な使い方を見ていきましょう。
基本的にはEnum型は次のように記述します。

enum 列挙名 {列挙子1, 列挙子2, ・・・};

このように、波カッコの中に格納したい定数をカンマ区切りで入れていきます。

Enum型のデータを出力するときは次のように記述します。

public class Test{
           public static void main(String[] args) {
                      Name name = Name.Tanaka;
                      System.out.println(name);
           }
 
           protected enum Name {
                      Tanaka,
                      Sato,
                      Kimura
           };
}

◯実行結果

Documents $ 1java test.java
Tanaka
Documents $ 1

このサンプルコードでは、列挙型「Name」を定義しています。そしてmainメソッドでNameを取得し、その中の「Tanaka」というデータのみを出力させています。

列挙型を取り出すときは「列挙名.取得したいデータ」と記述します。
これがEnum型の基本的な使い方となります。

switch文・if文での使い方

ここからはif文やswitch文でEnum型を扱う方法を解説します。

先ほど、Enum型はswitch文で扱いやすいということを説明しました。
ここではswitch文を使ってEnum型のデータを取得してみましょう。

public class Test {
           public static void main(String[] args) {
                      Name name = Name.Tanaka;
 
                      switch(name) {
                                 case Tanaka:
                                             System.out.println(“田中”);
                                             break;
                                 case Sato:
                                             System.out.println(“佐藤”);
                                             break;
                                 case Kimura:
                                             System.out.println(“木村”);
                                             break;
                      }
           }
 
           protected enum Name {
                      Tanaka,
                      Sato,
                      Kimura
           };
}

◯実行結果

Documents $ 1java test.java
田中
Documents $ 1

このコードでは列挙型「Name」のデータを取得し、switch文を使いデータ内容によって出力を変更させています。今回は定数「Tanaka」を取得しているため「case Tanaka」に一致し、「田中」と表示されました。

switch文で列挙型を扱う場合、このように簡単に記述することができます。

これと同じ処理をif文で書く場合には、次のようになります。

public class Test {
           public static void main(String[] args) {
                      Name name = Name.Tanaka;
 
                      if(name == Name.Tanaka)){
                                 System.out.println(“田中”);
                      }
                      else if(name == Name.Sato){
                                 System.out.println(“佐藤”);
                      }
                      else if(name == Name.Kimura){
                                 System.out.println(“木村”);
                      }
           }
 
           protected enum Name {
                      Tanaka,
                      Sato,
                      Kimura
           };
}

◯実行結果

Documents $ 1java test.java
田中
Documents $ 1

switch文のときとまったく同じ結果になることを確認してください。

Enum型を扱うメソッドの使い方

Enum型を扱うメソッドを見ていきましょう。
ここでは次のメソッドを順に解説していきます。

  • valueOfメソッド
  • ordinalメソッド
  • valuesメソッド

どのメソッドもよく使われるのでぜひ覚えてくださいね。

valueOfメソッド

valueOfメソッドは指定した文字列と列挙型を比較するときに使います。

public class Test {
           public static void main(String[] args) {
                      if(Name.valueOf(“Tanaka”) == Name.Tanaka) {
                                 System.out.println(“同じ”);
                      }
           }
 
           protected enum Name {
                      Tanaka,
                      Sato,
                      Kimura
           };
}

◯実行結果

Documents $ 1java test.java
同じ
Documents $ 1

このコードでは、valueOfメソッドを使って「Tanaka」という文字列と列挙型の定数「Tanaka」を比較しています。今の場合はどちらも同じTanakaというデータであるため、「同じ」と表示がされています。

valueOfメソッドはこのようにして使用します。

ordinalメソッド

ordinalメソッドは、Enum型の宣言された順番を取得するものです。
ordinalメソッドの使用例を見ていきましょう。

public class Test{
           public static void main(String[] args) {
                      Name name = Name.Tanaka;
                      System.out.println(name.ordinal());
           }
 
           protected enum Name {
                      Tanaka,
                      Sato,
                      Kimura
           };
}

◯実行結果

Documents $ 1java test.java
0
Documents $ 1

このコードでは列挙型Nameの「Tanaka」が何番目に入っているかを、ordinalメソッドを使って出力しています。
今の場合、Tanakaは0番目に入っています。基本的にプログラムでは数字は0番からカウントすることに気をつけてください。

このように、宣言された順番を取得する場合にordinalメソッドが使われます。

valuesメソッド

valuesメソッドは、列挙型のデータすべてを取得する場合に使います。
valuesメソッドの使用例を見ていきましょう。

public class Test{
           public static void main(String[] args) {
                      Name[] name = Name.values();
 
                      for (Name n : name) {
                                 System.out.println(n);
                     }
           }
 
           protected enum Name {
                     Tanaka,
                     Sato,
                     Kimura
           };
}

◯実行結果

Documents $ 1java test.java
Tanaka
Sato
Kimura
Documents $ 1

このコードでは列挙型「Name」に格納されたすべてのデータを出力しています。valuesメソッドを使って配列nameにデータを格納し、for文で1つずつ出力しています。

このように、valuesメソッドを使えば列挙型のすべてのデータを取得できます。

まとめ

本記事ではEnum型について解説しました。Enum型はどんなときに活用するのかおわかりいただけたでしょうか?

Enum型は複数の定数をまとめて定義するときに便利です。Enum型を使うことでソースコードの可読性を上げることができるので、積極的に使用しましょう。

またEnum型に対しては次のメソッドが使用できます。

  • valueOfメソッド
  • ordinalメソッド
  • valuesメソッド

ぜひこうしたメソッドも使いこなして、実務を効率化していってくださいね。

本記事がJava初心者の方にとって有意義なものとなれば幸いです。

プログラミングの家庭教師『Tech Teacher』


引用元:Tech Teacher

「スクールに通い続ける自信がない…」
「時間がなくてスクールに通えない…」

そんな方にはプログラミングの家庭教師『Tech Teacher』がおすすめです。
Tech Teacherはマンツーマン指導なので、生徒様一人ひとりに最適な指導を行うことができます。また、オンライン指導も可能なので、全国どこにいても家庭教師の授業を受けることができます。

Tech Teacherの3つの特徴


生徒様に最適化されたマンツーマン指導
完全マンツーマンの指導なので、生徒様の目的・学習状況・ご要望に合わせて、最適な指導をご提供いたします。

指導力・人柄・相性の優れた教師のご紹介
Tech Teacherには採用率20%の選考を突破した、指導力の高い教師が在籍しています。また、選考では指導力だけではなく人柄も重視しております。

1,000人の教師が在籍!幅広い指導に対応可能
業界トップレベルの1,000人の教師が在籍しています。そのため、幅広い言語・ツール・目的に対応することができます。

家庭教師ならではの5つの魅力


オーダーメイドのカリキュラム
生徒様一人ひとりに習熟度・目的・期間に応じて最適なカリキュラムを提供いたします。

きめ細やかなフォローが可能
生徒様からのご要望にきめ細やかに対応し、学習計画や勉強法などの指導もできるので、普段の勉強も捗ります。

習い事・学業・お仕事との両立が簡単
教室に通う必要がないので親御様の送迎も不要です。授業時間・頻度を生徒様のご都合に合わせて自由に調節することができます。

自分のペースで進められる
生徒様の理解度や意欲に応じて授業のスピードを調節できます。不明点や疑問点は都度立ち止まって解消できるので、着実に理解して進むことができます。

すぐ質問できるから挫折しない
先生を独り占めできるので、周りの目を気にすることなく分からないところをいつでも質問できます。

Tech Teacherへのお問い合わせ

無料体験授業・資料請求のお問い合わせはこちらから

質問のみのお問い合わせも受け付けております。