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