在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
參考文獻
- Oracle – JDK 7枚舉JavaDoc
- Oracle:String toUpperCase JavaDoc
- Oracle Doc –枚舉類型
标簽: 枚舉 Java
翻譯自: https://mkyong.com/java/java-convert-string-to-enum-object/