いくつかのJava enumの例と、それを使用する方法は何も特別なものではなく、自己参照用です。
1.基本列挙型
UserStatus.java
public enum UserStatus {
PENDING,
ACTIVE,
INACTIVE,
DELETED;
}
Test.java
public class Test {
public static void main(String[]args) {
//ACTIVE
System.out.println(UserStatus.ACTIVE);
}
}
2. Enum + Instanceフィールド
WhoisRIR.java
public enum WhoisRIR {
ARIN("whois.arin.net"),
RIPE("whois.ripe.net"),
APNIC("whois.apnic.net"),
AFRINIC("whois.afrinic.net"),
LACNIC("whois.lacnic.net"),
JPNIC("whois.nic.ad.jp"),
KRNIC("whois.nic.or.kr"),
CNNIC("ipwhois.cnnic.cn"),
UNKNOWN("");
private String url;
WhoisRIR(String url) {
this.url = url;
}
public String url() {
return url;
}
}
Test.java
public class Test {
public static void main(String[]args) {
//whois.arin.net
System.out.println(WhoisRIR.ARIN.url());
}
}
3. Enumメソッドあるロジック
Operation.java
public enum Operation {
PLUS,
MINUS,
TIMES,
DIVIDE;
double calculate(double x, double y) {
switch (this) {
case PLUS:
return x + y;
case MINUS:
return x - y;
case TIMES:
return x ** y;
case DIVIDE:
return x/y;
default:
throw new AssertionError("Unknown operations " + this);
}
}
}
Test.java
public class Test {
public static void main(String[]args) {
double result = Operation.PLUS.calculate(1, 2);
System.out.println(result);//3.0
}
}
4. Enumの使い方
4.1 Enumオブジェクトをループする。
public class Test {
public static void main(String[]args) {
for (UserStatus status : UserStatus.values()) {
System.out.println(status);
}
}
}
出力
PENDING ACTIVE INACTIVE DELETED
4.2 Enum値を比較するには、 `==`演算子を使用します。
public class Test {
public static void main(String[]args) {
WhoisRIR rir = WhoisRIR.APNIC;
if(rir == WhoisRIR.APNIC) {
System.out.println("This is APNIC : " + rir.url());
}
}
}
出力
This is APNIC : whois.apnic.net
4.3スイッチケース。
public class Test {
public static void main(String[]args) {
WhoisRIR rir = WhoisRIR.RIPE;
switch (rir) {
case ARIN:
System.out.println("This is ARIN");
break;
case APNIC:
System.out.println("This is APNIC");
break;
case RIPE:
System.out.println("This is RIPE");
break;
default:
throw new AssertionError("Unknown RIR " + rir);
}
}
}
出力
This is RIPE
4.2文字列をEnumオブジェクトに変換します。
public class Test {
public static void main(String[]args) {
//enum valueOf + uppercase
Operation op = Operation.valueOf("times".toUpperCase());
System.out.println(op.calculate(10, 3));
}
}
出力
30.0
完了しました。
参考文献
Doc – 列挙型]。
http://stackoverflow.com/questions/1750435/comparing-java-enum-members-or-equals
[Stackoverflow
: Comparing Java enum members: == or equals()]. link://java/java-convert-string-to-enum-object/[Java – Convert String
to Enumオブジェクト]。
Java – 列挙値を比較