java - 如何使用 ENUM 从三个中返回随机字符串?

标签 java random enums

通过使用下面的代码,我找到了我所在的数据中心并且它工作正常..

public enum DatacenterEnum {

    DEV, DC1, DC2, DC3;

    private static DatacenterEnum compareLocation() {
        String ourhost = getHostName();

        for (DatacenterEnum dc : values()) {
            String namepart = "." + dc.name().toLowerCase() + ".";
            if (ourhost.indexOf(namepart) >= 0) {
            return dc;
            }
        }
        return null;// I don't want to do this now.
    }
}

但它可能无法找到任何数据中心,所以目前我正在返回 null

有没有直接的方法或单行命令,我可以通过它随机返回 DC1DC2DC3ENUM 而不是返回 null

我知道一种方法是制作一个字符串列表,然后随机选择 0 到 2 之间的任何整数(含 0 到 2),然后找到该字符串。但是代码太多了,实际上不是,只是想看看有没有其他方法可以做到这一点?

我可以直接在 ENUM 中使用任何简单直接的方法吗?

最佳答案

这是一行:

return DataCenterEnum.values()[new Random().nextInt(3) + 1)];

对于那些需要对其代码进行更严格控制的人,这里有一个更安全的版本,它不依赖于枚举实例的顺序:

return new DataCenterEnum[]{DC1, DC2, DC3}[new Random().nextInt(3)];

关于java - 如何使用 ENUM 从三个中返回随机字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174918/

相关文章:

java - 如何在Java中添加环境变量?

java - 我在 iText 中的希伯来语文本是左对齐的

c - 除了使用时间来生成随机数之外,还有其他选择吗?

java - 这个 Java 枚举的使用/设计是否正确?

objective-c - 枚举自定义 : Is it possible to create subEnum?

java - Java 静态初始化程序可以调用静态方法吗?

java - 如何做 “sequential” 作业调度( quartz ?)

MySQL order by rand() 按天分组

matlab - matlab中的随机颜色矩阵

c++ - 在结构中初始化一对结构