通过使用下面的代码,我正在找出我所在的数据中心,并且它工作正常。
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
中返回DC2
或DC3
或ENUM
而不返回null
?我知道一种方法是制作一个字符串列表,然后随机选择0到2之间的任何整数,然后找到字符串。但这是太多的代码,实际上不是,而是只是试图看看我们还有其他方法可以做到这一点?
我可以在ENUM中直接使用的任何简单直接的方法吗?
最佳答案
这是一行:
return DataCenterEnum.values()[new Random().nextInt(3) + 1)];
对于那些需要严格控制代码的人来说,这是一个更安全的版本,它不依赖于枚举实例的顺序:
return new DataCenterEnum[]{DC1, DC2, DC3}[new Random().nextInt(3)];