【8分でわかる】Enumクラスで文字列を使った比較・変換テクニックをわかりやすく解説!

Enumクラスはとても便利です。

定数として扱うだけでなく自分でメソッドを追加出来たり、既に用意されている便利なメソッドを使ったりすることもできます。

しかし、Enumクラスで文字列を扱う際に

「文字列とEnumの定数を比較したいけどどうすればいいの?」
「switchのcase文で文字列は使えないけどEnumを使うことで実現可能なの?」

などと言ったお声を耳にします。

そういった方にはこの記事を見れば文字列⇔列挙型の変換方法やswitch文で文字列を使った分岐方法がわかるようになります!

enumについて

まず本記事の本題に入る前にenumがどんなものかを軽くおさらいしておきましょう!

次のコードを見て下さい。

このコード自体は特に何かをするものではありませんがmainメソッドよりも前にenumというキーワードが付いたブロック(処理の塊)があります。

このブロックの中で定義されているOrangeやAppleは列挙子と呼ばれています。

enum自体の使い方の解説を深掘りすると本記事の目的に外れてしまうため避けておきますが、

なぜenumを使うのかというと簡単に言ってしまえば読みやすさ(可読性)を向上させることができるからです。

列挙子と文字列を比較したい

Enumを使っていると列挙子と文字列を比較したい場合が出てくるかと思います。

まずは次のコードをみてください。

これはエラーが発生します。

では上記のコードのifの条件をtrueにするにはどうすればよいでしょうか。

二つ方法がありますので見てみましょう。
(if文の部分だけ掲載します。)

または

とすることでエラー無く比較ができるようになります!

valueOfについてはこちらをご覧ください!

【Java】enumでvalueOfメソッドの意味と使い方をわかりやすく解説!
更新日 : 2017年6月25日

switch文で文字列の分岐が可能!?

通常Javaでは文字列をswitch文で分岐させようとするとエラーがでて実行することができません。

しかし、Enumを使うことで擬似的に文字列分岐を行うことができます。

ではどうやってやるか見てみましょう。

独自メソッドを定義して内部で拡張for文を使ってvaluesメソッドの要素を一つずつ取得していき列挙子の値に一致するものがあればその列挙子を返すという処理になっています。

Enumについてもっと詳しく!

Enumについてもっと詳しく知りたい方は必見です!

【Java入門】Enum(列挙型)の使い方総まとめ
更新日 : 2019年4月25日

switch文の使い方総まとめ

switch文の使い方についてさらに詳しく知りたいときはこちらの記事を確認してください!

まとめ

いかがでしょうか。

列挙子名と文字列を比較したい場合はvalueOfを使いましょう。

列挙子に設定した値を列挙子名に変換して使いたい場合は独自のメソッドを定義することで実現することができます。

もし忘れてしまったらこの記事を思い出して下さい!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

オータケ

オータケ

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説