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

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

是否有任何直接方法或单行命令可以通过我随机地在DC1中返回DC2DC3ENUM而不返回null

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

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

最佳答案

这是一行:

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




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

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

10-08 03:13