原文: https://howtodoinjava.com/java/enum/java-enum-string-example/
在本本使用字符串值进行 Java 枚举的指南中,学习 使用字符串 创建枚举,遍历所有枚举值,获取枚举值以及对 进行反向查找,以通过字符串 参数查找枚举。
具有固定值的固定属性集时,应始终创建枚举。 它们本质上是单例 ,提供了更好的性能。
Java 程序 用字符串 创建枚举。 该枚举包含部署环境及其各自的 URL。 将每个枚举常量的 URL 传递给 枚举构造器 。
public enum Environment
PROD("https://prod.domain.com:1088/"),
SIT("https://sit.domain.com:2019/"),
CIT("https://cit.domain.com:8080/"),
DEV("https://dev.domain.com:21323/");
private String url;
Environment(String envUrl) {
this.url = envUrl;
public String getUrl() {
return url;
要遍历枚举列表,请对枚举类型使用values()
方法,该方法返回数组中的所有枚举常量。
//Get all enums
for(Environment env : Environment.values())
System.out.println(env.name() + " :: "+ env.getUrl());
PROD :: https://prod.domain.com:1088/
SIT :: https://sit.domain.com:2019/
CIT :: https://cit.domain.com:8080/
DEV :: https://dev.domain.com:21323/
要获取单个枚举值(例如,从枚举常量获取产品网址),请使用您创建的值方法。
//Using enum constant reference
String prodUrl = Environment.PROD.getUrl();
System.out.println(prodUrl);
https://prod.domain.com:1088/
如果您想使用它的名称获取枚举常量,请使用valueOf()
方法。
//First get enum constant reference from string
Environment sitUrl = Environment.valueOf("SIT");
System.out.println(sitUrl.getUrl());
https://sit.domain.com:2019/
很多时候,我们将拥有枚举的值,并且我们将需要通过字符串值获取枚举名称。 这可以通过反向查找来实现。
在反向查找中,枚举在内部维护值到枚举的映射作为键值对。 搜索了此映射,应用程序需要查找与其关联的字符串值有关的枚举。
import java.util.HashMap;
import java.util.Map;
public enum Environment
PROD("https://prod.domain.com:1088/"),
SIT("https://sit.domain.com:2019/"),
CIT("https://cit.domain.com:8080/"),
DEV("https://dev.domain.com:21323/");
private String url;
Environment(String envUrl) {
this.url = envUrl;
public String getUrl() {
return url;
//****** Reverse Lookup Implementation************//
//Lookup table
private static final Map<String, Environment> lookup = new HashMap<>();
//Populate the lookup table on loading time
static
for(Environment env : Environment.values())
lookup.put(env.getUrl(), env);
//This method can be used for reverse lookup purpose
public static Environment get(String url)
return lookup.get(url);
要使用此反向查找,请在应用程序代码中使用enum.get()
方法。
//Get enum constant by string - Reverse Lookup
String url = "https://sit.domain.com:2019/";
Environment env = Environment.get(url);
System.out.println(env);
Output:
阅读更多:完整的 Java 枚举指南
在评论部分,将我对 Java 8 枚举的问题留给我。
学习愉快!
阅读更多: