天天看點

Java –将字元串轉換為枚舉對象

在Java中,可以使用Enum

valueOf()

将String轉換為Enum對象,請檢視以下案例研究:

1. Java枚舉示例

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.解決方案

要解決此問題,可以使用枚舉

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
      

參考文獻

  1. Oracle – JDK 7枚舉JavaDoc
  2. Oracle:String toUpperCase JavaDoc
  3. Oracle Doc –枚舉類型

标簽: 枚舉 Java

翻譯自: https://mkyong.com/java/java-convert-string-to-enum-object/