给定以下代码:
private boolean isBlahTrue(final BigDecimal status) {
switch (status.intValue()) {
case 1:
case 2:
case 3:
return true;
case 5:
case 6:
case 7:
return false;
default:
throw new MyAppRuntimeException("Status unknown!");
}
}
我的问题是:这是好事还是坏事?
逻辑是:
1, 2, 3 --> true
5, 6, 7 --> false
但无论如何,人们可以考虑一个简单的 IF 也可以做这些事情,比如
if (1,2,3) {true}, else {false}
.
但是我不会检查状态是否是例如4(必须导致异常)。
我尝试了一些解决方案,比如包含,但代码没有改进。
有什么我可以尝试的想法吗?
我建议在这种情况下使用地图。
有点像
Map<Integer, Boolean> statusChecker = new HashMap<>();
statusChecker.put(1, true);
statusChecker.put(2, true);
...
statusChecker.put(5, false);
...
现在你可以做检查了
if(!statusChecker.contains(status)) {
throw RuntimeException("invalid status");
} else {
return statusChecker.get(status);
}
你已经拥有的没有错。但是,如果您使用的是 Java12 或更高版本,则可以使用 Java 12 中引入的 switch 表达式:
private boolean isBlahTrue(final BigDecimal status) {
return switch (status.intValue()){
case 1, 2, 3 -> true;
case 5, 6, 7 -> false;
default -> throw new MyAppRuntimeException("Status unknown!");
};
}