您更喜欢以下哪一项:
SomeEnum enum = SomeEnum.SOMETHING;
if (aString.equals(anotherString)) {
enum = SomeEnum.SOMETHING_ELSE;
}
return foo.bar(enum);
或
if (aString.equals(anotherString)) {
return foo.bar(SomeEnum.SOMETHING_ELSE);
}
return foo.bar(SomeEnum.SOMETHING);
我想我更喜欢第一个,因为它只有1点回报。另一方面,我认为第二个更容易阅读。你怎么看?也许你有一个更复杂的解决方案。
答案 0 :(得分:3)
这取决于我们谈论的项目数量:
对于一个大的枚举,我会保留一个从String到枚举对象的映射。我会在地图中查找该项目并提供SomeEnum.SOMETHING作为默认值。
public SomeEnum get(String key, SomeEnum defaultValue){
SomeEnum value = this.map.get(key);
return value == null ? defaultValue : value;
}
对于较少的项目,我可能会使用switch语句:
public SomeEnum get(String key, SomeEnum defaultValue){
switch(key){
case "somevalue1" : return SomeEnum.SOME_VALUE_1;
case "somevalue2" : return SomeEnum.SOME_VALUE_2;
default: return defaultValue;
}
}
但如果它实际上只是问题中提到的两个案例,我会选择
return aString.equals(anotherString) ? SomeEnum.SOMETHING_ELSE : SomeEnum.SOMETHING;
答案 1 :(得分:0)
这并不重要。这些简化可能会被编译器优化!你应该使用任何使你的代码更具可读性的东西!