0
0

(java gold) enum

Posted at

enum(イーナム)の宣言

構文

enum EnumName {
    CONSTANT1,
    CONSTANT2,
    // ...
}
  • enum :列挙型の宣言

  • EnumName :列挙型の名前

  • CONSTANT1 :列挙型の定数。定数は大文字で記述されカンマ区切り、特定の値を持つ

  • enumは外部からインスタンス化できない(定数として使える)

switch文で使用可能

  • caseは定数で指定する下記コードでは(R,G,B)
public class Test {
    public static void main(String... args) {
        new Test().check(GRADE.A);
    }
    void check(GRADE grade) {
        switch (grade) {
            case A:
                System.out.println("Best"); break;
            default: System.out.println("Not best");
        }
    }
}
enum GRADE {
    A(100), B(75), C(50);
    int score;
    private GRADE(int score) { this.score = score; }
}
  • == 演算子で比較可能

enumのメソッド

  • name()

  • valueOf() : 指定された名前のEnumを取得する

  • values() : Enumの全定数を取得する

  • EnumクラスのvaluesメソッドはそのEnumに定義されている列挙子を配列に入れて返却する。

  • EnumクラスのvalueOfメソッドはStringの引数を渡し、そのインスタンスを返却する。

enumに固有の値を持たせる方法

enum Color implements Serializable {
    R(255), G(204), B(0);
    int code;
    private Color(int code) {
        this.code = code;
    }
    public int getCode() {
        return code;
    }
}

enumの呼び出し

System.out.println(Color.G.getCode()); 
// 204 が出力される

フィールドやメソッドの定義が可能

  • enumjava.lang.Enumクラスを継承しているのでEnumクラスの一部のメソッドを使用できる

JavaのEnumにおいて、コンストラクタのアクセス修飾子はprivateである必要がある。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0