定数を定義する際にEnumクラスを使うことがあるかと思います。
JavaのEnumは定数を定義するだけでなくメソッド等も定義できる特殊なオブジェクトです。
このEnumクラスの一つにvaluesメソッドがありますが
「valuesメソッドとはそもそも何?」
「Enumクラスの全ての項目を一度に取得する方法がないの?」
「valuesメソッドの戻り値の順番はどういう順番で返ってくるの?」
と思った方はこの記事を読むことでその疑問を解決することができます!
Enumのvaluesメソッドの使い方から戻り値に関する情報がわかりやすく学べます!
なお、Javaの記事については、こちらにまとめています。
enumについて
まず本記事の本題に入る前にenumがどんなものかを軽くおさらいしておきましょう!
次のコードを見て下さい。
protected enum Fruit { Orange, Apple, Melon }; public static void main(String[] args) { Fruit fruit_type = Fruit.Orange; }
このコード自体は特に何かをするものではありませんがmainメソッドよりも前にenumというキーワードが付いたブロック(処理の塊)があります。
このブロックの中で定義されているOrangeやAppleは列挙子と呼ばれています。
enum自体の使い方の解説を深掘りすると本記事の目的に外れてしまうため避けておきますが、
なぜenumを使うのかというと簡単に言ってしまえば読みやすさ(可読性)を向上させることができるからです。
valuesメソッドの使い方
基本的な使い方
まずvaluesメソッドを使うとどのような効果が得られるかについてお話をします。
valuesメソッドは定義した列挙子をまとめて返すという機能を持ったメソッドになります。
早速、書き方を見てみましょう。
public enum Fruit { Orange, Apple, Melon; } public static void main(String[] args) { for(Fruit frt : Fruit.values()) { System.out.println(frt.toString()); } }
このコードではFruit.valuesメソッドを呼び出して定義された列挙子をまとめて取得し、拡張for文を使って一つずつの列挙子をprintlnで表示しています。
valuesメソッドの意味や使い方は難しくないですよね。
しかし、ここで一つ疑問が出てきます。
次の項目でその疑問について解説します!
戻り値の順番について
valuesメソッドを呼んだ場合、定義された列挙子がまとめて返ってくると解説しました。
しかし、返ってくる列挙子の順番はどうなっているのでしょうか?
定義した順番どおりに戻ってくるのかそれとも毎回不規則な順番で返ってくるのか・・・
実はvaluesメソッドを呼び出して戻ってくる列挙子の順番は定義した通りの順で戻ってくるということが仕様上決められています。
そのためvaluesメソッドを呼んだ後に定義した順番どおりに直す処理等をわざわざ書く必要はありません!
valuesメソッドの使用例
実際に使う場面としては以下の記事を見ていただくとわかるかと思います!
Enumについてもっと詳しく!
Enumについてもっと詳しく知りたい方は必見です!
まとめ
いかがでしょうか。
本記事ではEnumのvaluesメソッドについて学びました。
valuesメソッドでは定義された列挙子が定義した順番通りに戻ってきます。
もしvaluesメソッドについて忘れてしまったらこの記事を思い出して下さい!