注目記事

【Javaコード入門】enum型(列挙型)_③コンストラクター/フィールド/メソッドの定義

列挙型もまたクラスの一種ですから、配下にコンストラクターやフィールド/メソッドを定義することも可能です。

WeekdayEnum.java

  1. public enum WeekdayEnum {
  2.   Sunday("sun"),
  3.   Monday("mon"),
  4.   Tuesday("tue"),
  5.   Wednesday("wed"),
  6.   Thursday("thu"),
  7.   Friday("fri"),
  8.   Saturday("sat");
  9.  
  10.   // フィールド
  11.   private String name;
  12.  
  13.   // コンストラクター
  14.   private WeekdayEnum(String name) {
  15.     this.name = name;
  16.   }
  17.  
  18.   // メソッド
  19.   @Override
  20.   public String toString() {
  21.     return this.name;
  22.   }
  23. }

列挙値に、それ自身の識別子とは別に(たとえば)表示のための値を持たせたい、などの目的がある場合には、この例のようにフィールドを準備します。この例であれば、曜日の短縮名をnameフィールドに持たせます。
フィールドは、一般的なクラスと同じく、コンストラクターで初期化できます。構文は基本的にクラスのそれに準じますが、アクセス修飾子はprivate固定となる点に注意してください(よって、サンプルのコードもprivateを省略しても意味は同じです)。
コンストラクターを定義したら、列挙定数もこれに合わせて「列挙定数(引数, ….)の形式で宣言する必要があります。また、以降のメンバー定義と区切りが明確になるように、列挙定数の末尾には「;」セミコロンを置きます。
最後にメソッドの定義です。ここでは、nameフィールドの値を取り出せるよう、toStringメソッドを定義しています。構文はクラスで学んだものと同様なので、特筆すべき点はありません。

以上のように定義した列挙型は、以下のように利用できます。

  1. System.out.println(WeekdayEnum.Monday.toString());  // 結果:mon
enum型(列挙型)_目次
列挙型を定義する – enum型
列挙型のメソッド
コンストラクター/フィールド/メソッドの定義

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。