我得到一个switch语句,“ BMW”和“ Mercedes”案件共享几乎相同的内容,差异不大(更新方法)。
对于这些情况下的内容,我不想重复所有代码。有什么办法可以解决这个问题?
switch (car) {
case "BMW":
updateBmwSpecs();
...//Same code with Mercedes case
break;
case "Mercedes":
updateMercedesSpecs();
...//Same code with BMW case
break;
case "Ferrari":
//content
break;
...//Remaining cases
}
答案 0 :(得分:5)
没有任何更多信息,我在这里看到的唯一选择是提取具有该常用功能的辅助方法:
switch (car) {
case "BMW":
updateBmwSpecs();
doCommon();
break;
case "Mercedes":
updateMercedesSpecs();
doCommon();
break;
case "Ferrari":
break;
// remaining cases
}
private void doCommon() {
// do whatever logic be common to BMW and Mercedes
// e.g. take joy rides through the city and get too many car washes
}
答案 1 :(得分:1)
这似乎微不足道,但您可以为两者都拥有相同的case
并在这种情况下添加if/else
以确定要调用的方法。
switch (car) {
case "BMW":
case "Mercedes":
if (car.equals("BMW")) {
updateBmwSpecs();
} else {
updateMercedesSpecs();
}
...//Same code for Mercedes and BMW case
break;
...//Remaining cases
}
还是将汽车类型的参数添加到updateSpecs
方法中?
switch (car) {
case "BMW":
case "Mercedes":
updateCarSpecs(car);
...//Same code for Mercedes and BMW case
break;
...//Remaining cases
}