我有一段很好的代码,但是我想知道是否有更好的方法来获得相同的结果。
public enum Status {
ENUM1, ENUM2, ENUM3, ENUM4;
public static Status getStatus(Set<String> set) {
if (set.contains("x")) {
return ENUM1;
}
if (set.contains("y") || set.contains("z")) {
return ENUM2;
}
if (set.contains("c")) {
return ENUM3;
}
return ENUM4;
}
}
所以基本上这是代码(xyzc都是常量)。因此,该方法需要一组字符串,并且必须返回正确的枚举。有没有更好的方法来达到相同的结果?
编辑:这是方法的方法,设置开头永远不会为空,所以不要在意那部分。
Edit2:希望可以清除它。
最佳答案
您可以考虑将转换逻辑封装在Status枚举中。像这样:
enum Status{
Option1("x"),
Option2("y", "z"),
Option3("c"),
Default;
Status (String ... values){
this.values = values;
}
String [] values;
static Status convert(Set<String> set){
for (Status status : Status.values())
for (String str : status.values)
if (set.contains(str))
return status;
return Default;
}
}
关于java - Java集包含多个返回选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344337/