Java – StringをEnumオブジェクトに変換する
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 – 列挙型]