【发布时间】:2017-07-09 17:15:27
【问题描述】:
我得到了一段运行良好的代码,但我想知道是否有更好的方法来获得相同的结果。
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 都是常量)。所以该方法接受一组字符串并且必须返回正确的枚举。有没有更好的方法来达到同样的效果?
编辑:这就是方法的方式,set 永远不会为空,所以不要介意那部分。
Edit2:希望这可以清除它..
【问题讨论】:
-
您的代码会导致 NullPointerException。不抱歉...您的 Set 从未初始化。 IDE 应该会告诉你。
-
代码没有被编译。您必须首先初始化变量。
-
不,这只是一个例子。集合从一开始就永远不会为空。
-
您可以使用 Map 并为键提供一个值,如果 Map 包含它们,它们将返回该值。
-
我投票决定将此问题作为离题结束,因为您要求进行代码审查和改进建议。您的问题可能与codereview.stackexchange.com 相关(但请先查看他们的规则!)