Javaのenumの例
いくつかの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 – 列挙値を比較