В Java вы можете использовать Enum valueOf()
для преобразования строки в объект перечисления, ознакомьтесь со следующим примером:
1. Пример перечисления 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. Проблема
Учитывая строку “вокруг”, как преобразовать ее обратно в перечисленный выше объект?
package com.mkyong.whois.utils; public class TestEnum { public static void main(String[] args) { //How to convert this? WhoisRIR rir = "arin"; } }
3. Решение
Чтобы решить эту проблему, вы можете использовать перечисление valueOf()
функция и преобразует строку в объект перечисления.
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: Строка в верхнем регистре javadoc
- Типы перечислений документов Oracle
Оригинал: “https://mkyong.com/java/java-convert-string-to-enum-object/”