Javaのenum(列挙型) 入門


JavaのEnumはオブジェクトの列挙になるので、メソッドを宣言したり、メンバー変数を宣言したりと振る舞いを持たせることができます。

👽 サンプルコード

public class Hoge {
public static enum Type {
HOGE("Hoge", 1) {
@Override // 抽象メソッドの実装
public void doSomething() {}
},
FUGA("Fuga", 2) {
@Override // 抽象メソッドの実装
public void doSomething() {}
};

private final String label;
private final int value;

// コンストラクタ
private Type(String label, int value) {
this.label = label;
this.value = value;
}

// labelの取得
public String getLabel() {
return this.label;
}

// valueの取得
public int getValue() {
return this.value;
}

public static Type ValueOf(final int value) {
Type[] types = Type.values();
for (Type type : types) {
if (type.getValue() == value) {
return type;
}
}
return null;
}

// 抽象メソッドの定義
public abstract void doSomething();
}
}

🍣 すべての要素を取得:values

Enumはstaticメソッドとしてvalues()があり、定義したすべての要素を取得できます。

public class EnumValuesSample {
private enum Planet {
MERCURY, VENUS, EARTH, MARS, JUPITER, SATURN, URANUS, NEPTUNE;
}

public static void main(String[] args) {
for (Planet p : Planet.values()) {
System.out.printf(p.toString() + "\n");
}
}
}

🚌 指定した名前をもつ要素を返す:valueOf

JavaのEnumはstaticメソッドとしてvalueOf(String name)を持ち、指定した名前をもつEnumのオブジェクトを返します。

public class EnumValuesSample {
private enum Planet {
MERCURY, VENUS, EARTH, MARS, JUPITER, SATURN, URANUS, NEPTUNE;
}

public static void main(String[] args) {
for (Planet p : Planet.values()) {
Planet p = Planet.valueOf("MARS")
System.out.printf(p.toString());
}
}
}

🍮 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍