例如,我得到的情况是数字a只能是1、2、3或4。然后我用它来构建一个开关模块,如下所示:
switch (metadata.getValueType()) {
case 1:
method1();
break;
case 2:
method2();
break;
case 3:
method3();
break;
case 4:
method4();
}但是我知道在没有default的情况下编写开关块不是一个好习惯,对吧?所以我想在case 4之后添加一个default。但是我可以确定除了1,2,3和4之外没有其他的情况。我应该用default写什么
最佳实践是什么?在案例4中,我可以不写任何内容吗,如下所示:
switch (metadata.getValueType()) {
case 1:
method1();
break;
case 2:
method2();
break;
case 3:
method3();
break;
case 4:
default:
method4();
}发布于 2016-09-21 13:10:37
不管您使用的是哪种语言,我总是使用default子句。
事情可能而且确实会出错。值将不是您所期望的,以此类推。
switch (myVar) {
case 1: ......; break;
case 2: ......; break;
default: throw new RuntimeException("myVar invalid " + myVar);
}发布于 2016-09-21 13:11:48
如果我没理解错你的问题..。
提供默认开关选项是一种最佳实践,因为它将捕获任何预期的值(即使它们无效: 5、6、7等)以及意外的值。这允许您控制当任何有效值命中开关时发生的情况。要回答您的问题,您可以只在默认情况下添加一条break语句,该语句除了退出开关之外什么也不做。
switch (metadata.getValueType()) {
case 1:
method1();
break;
case 2:
method2();
break;
case 3:
method3();
break;
case 4:
method4();
break;
default:
break;
}发布于 2016-09-21 12:53:13
是的,没有缺省的switch语句是丑陋的。因此,您只需删除case 4并将其替换为default即可。就像你说的,你正好有4个箱子。所以,如果它不是1或2或3..。它将是4。但我希望通过使用4个案例来保留您的代码,并在默认正文中打印一些错误消息。
https://stackoverflow.com/questions/39607742
复制相似问题