通过使用下面的代码,我找到了我所在的数据中心并且它工作正常..
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 之间的任何整数(含 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/