在Java 使用字符串添加枚举

在enum中,当我们有一组固定的相关常量时,我​​们应该始终创建。枚举上单例的,因此它们提供了更好的性能。

1. 用字符串创建枚举

用字符串创建一个enumJava 程序。给定的枚举包含部署环境及其各自的 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.获取枚举值

要获取单个枚举值(例如,从枚举常量获取生产 URL),请使用我们创建的值方法。

//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. 反向查找——从值中获取枚举名称

我们经常会有枚举的值,我们需要通过它的值来获取枚举名称。这是使用反向查找实现的。

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 ************//
 
    public static Optional<Environment> get(String url) {
        return Arrays.stream(Environment.values())
            .filter(env -> env.url.equals(url))
            .findFirst();
    }
}

要在应用程序代码中使用反向查找,使用enum.get()方法。

String url = "https://sit.domain.com:2019/";

Optional<Environment> env = Environment.get(url);
 
System.out.println(env.get());

输出:

SIT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值