添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
有腹肌的猕猴桃  ·  API: Projects·  2 小时前    · 
虚心的排球  ·  API: Time Entries·  2 小时前    · 
纯真的冲锋衣  ·  API: Statuses·  2 小时前    · 
聪明的红薯  ·  2023版:深度比较几种.NET ...·  3 小时前    · 
风流的爆米花  ·  Developer Community·  3 月前    · 
乖乖的拐杖  ·  Solved: Bitbucket ...·  4 月前    · 
打篮球的自行车  ·  public static String ...·  4 月前    · 

209.md

File metadata and controls

带有字符串值的 Java 枚举

原文: https://howtodoinjava.com/java/enum/java-enum-string-example/

在本本使用字符串值进行 Java 枚举的指南中,学习 使用字符串 创建枚举,遍历所有枚举值,获取枚举值以及对 进行反向查找,以通过字符串 参数查找枚举。

具有固定值的固定属性集时,应始终创建枚举。 它们本质上是单例 ,提供了更好的性能。

1. 使用字符串值创建 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;

2. 迭代枚举常量

要遍历枚举列表,请对枚举类型使用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/

3. Java 枚举转换为String

要获取单个枚举值(例如,从枚举常量获取产品网址),请使用您创建的值方法。

//Using enum constant reference
String prodUrl = Environment.PROD.getUrl();
System.out.println(prodUrl);
https://prod.domain.com:1088/

4. 按名称获取枚举 – 枚举字符串参数

如果您想使用它的名称获取枚举常量,请使用valueOf()方法。

//First get enum constant reference from string
Environment sitUrl = Environment.valueOf("SIT");
System.out.println(sitUrl.getUrl());
https://sit.domain.com:2019/

5. 反向查找 – 从值中获取枚举名称

很多时候,我们将拥有枚举的值,并且我们将需要通过字符串值获取枚举名称。 这可以通过反向查找来实现。

在反向查找中,枚举在内部维护值到枚举的映射作为键值对。 搜索了此映射,应用程序需要查找与其关联的字符串值有关的枚举。

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 枚举的问题留给我。

学习愉快!

阅读更多:

Java 枚举教程