Javaでは、Enum `valueOf()`を使用してStringをEnumオブジェクトに変換できます。次のケーススタディを確認してください。
1. Java Enumの例
WhoisRIR.java
package com.mkyong.whois.utils;
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;
}
}
2.問題
与えられた文字列 “arin”、それを上記のEnumオブジェクトに戻す方法は?
TestEnum.java
package com.mkyong.whois.utils;
public class TestEnum {
public static void main(String[]args) {
//How to convert this?
WhoisRIR rir = "arin";
}
}
3.解決策
これを解決するには、enum `valueOf()`関数を使用してStringをEnumオブジェクトに変換します。
TestEnum.java
package com.mkyong.whois.utils;
import java.util.Locale;
public class Test {
public static void main(String[]args) {
//Solution : Uses valueOf()
System.out.println(WhoisRIR.valueOf("arin".toUpperCase()));
//Recommended Solution : add locale
WhoisRIR rir = WhoisRIR.valueOf("ripe".toUpperCase(Locale.ENGLISH));
System.out.println(rir);
System.out.println(rir.url());
//Error, no enum constant, case sensitive
//System.out.println(WhoisRIR.valueOf("arin"));
}
}
出力
ARIN RIPE whois.ripe.net
参考文献
JDK 7 Enum JavaDoc]。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toUpperCase%28%29
[Oracle
: String toUpperCase JavaDoc].
http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
[Oracle
Doc – 列挙型]