【Java入門】Enum(列挙型)の使い方総まとめ

java enum
オータケ
書いた人 オータケ
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーランスのオータケです。

皆さんはJavaEnumを使っていますか?

そしてEnum(列挙型)を使いこなせていますか?

Enumには定数を定義して使うだけでなく、フィールドを定義したりメソッドを定義して使うことができます!

この記事では、Enumについて

・Enumについて
・Enumのメソッドの使い方

という基本的な内容から、

・Enumクラスの使い方

などの応用的な使い方に関しても解説していきます。

今回はEnumについて、わかりやすく解説します!

Enumについて

Enum(列挙型)とは、複数の定数をひとつにまとめておくことができる型のことです。

Enumで定義する定数のことを列挙子と呼びます。

C言語でも列挙型は使われ、定義の方法は似ている部分がありますが、Javaの列挙型はクラスですので、フィールドやメソッドを定義することができます。

switch文で列挙子を使用することで、読みやすさ(可読性)が向上することなどがEnumを使うメリットになります。

定義について

Enumの定義は以下のように記述します。

サンプルコードで確認しましょう。

実行結果:

このサンプルコードでは、列挙型のFruitを定義しています。

Fruitを使用するには普通のクラスと同じようにオブジェクトを宣言します。

ここではfruit_typeを宣言しています。

宣言したオブジェクトにEnumの列挙子を格納して、オブジェクトを使用することができるようになります。

switch文での使い方

Java6以前の環境では、switch文でString型を指定できなかったので、enumを使って記述を工夫する必要がありました。

Java7からは指定できるようになりましたので、記述が簡潔になりました。

サンプルコードで確認しましょう。

実行結果:

Enumのメソッドの使い方

Enumにはメソッドも用意されています。

メソッドの使い方についてもみていきましょう。

valueOfメソッド


valueOf
メソッドは引数で指定した文字列から列挙子名を取得する場合に使用します。

サンプルコードで確認しましょう。

実行結果:

下の記事ではこのvalueOfメソッドの使い方や用途をわかりやすく解説しています!

valuesメソッド

valuesメソッドは全ての列挙子を返します

実行結果:

valuesメソッドの使い方をわかりやすく解説したものがこちら記事です!

Enumクラスの使い方

JavaのEnumはクラスです。

クラスですので、フィールドやメソッドを定義することができます。

フィールドやメソッドを定義する方法についてみていきましょう。

フィールド変数とコンストラクタの定義

C言語の列挙型は初期値(整数値)を与えることができました。

Javaの列挙型はクラスなので、C言語のように初期値を与えることはできません

Javaの列挙型はクラスでフィールドやコンストラクタも定義することができるので、コンストラクタを使って初期値を設定することができます。

初期値には数値はもちろん文字列も設定することが可能です。

数値の値を定義する場合

初期値に数値を設定する場合についてみていきましょう。

このサンプルコードのように、int型のフィールドidを定義し列挙子の後に「( )」で囲って値を定義することができます。

なお、コンストラクタのアクセス修飾子はprivateのみ使用可能です。

コンストラクタの処理を記述しない場合はエラーが発生しますので注意が必要です。

コンストラクタの記述は値を保持するために必要なものだと考えて下さい。

文字列の値を定義する場合

初期値に文字列を定義することも可能です。

メソッドの定義について

次に、メソッドの定義についてみていきましょう。

定義したフィールドの値を取得する例をみてみましょう。

実行結果:

このサンプルコードでは、列挙子の値を取得するためにメソッドgetValueを定義しています。

また、Enumクラスにあらかじめ用意されているordinalメソッドとnameメソッドを使っています。

ordinalメソッドは列挙子の順番を取得し、nameメソッドは列挙子名を取得します。

なお、Java6以前の環境ではswitch文でString型を指定できなかったので、enumを使って記述を工夫する必要があると前述しています。

この場合にも、メソッドを定義する必要があります。

詳しい内容については、こちらを参考にしてくださいね。

Enumクラスの注意点

Enumクラスを使用する際の注意点をおさらいしておきます。

  • Enumクラスの列挙子には値を付与することができますが、その場合はフィールドとコンストラクタを定義する必要があります。
  • Enumクラスのコンストラクタのアクセス修飾子はprivateのみ許されます
  • Enumクラスは別のクラスを継承することはできませんが、インターフェースを実装することはできます。

まとめ

いかがでしたか?

Enumは列挙型と呼ばれるクラスであることがわかりました。

Javaの列挙型では単なる列挙子のあつまりというわけではなく、独自の機能が追加できる特別なクラスであることも学びました。

そしてvalueOfvaluesメソッドを使うことにより、自分の開発状況にあった便利な処理が書けることも学びました。

もしEnumについて使い方を忘れた場合は、ぜひこの記事を思い出して下さい!

Javaカリキュラム無料公開中!
この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2

学習者インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

オータケ

オータケ

29歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。