Вопрос по syntax, java, switch-statement – Избегать избыточности оператора Switch, когда несколько дел делают одно и то же?

9

У меня есть несколько случаев в коммутаторе, которые делают то же самое, например так: (это написано на Java)

 case 1:
     aMethod();
     break;
 case 2:
     aMethod();
     break;
 case 3:
     aMethod();
     break;
 case 4:
     anotherMethod();
     break;

Можно ли как-нибудь объединить случаи 1, 2 и 3 в один, так как все они вызывают один и тот же метод?

Ваш Ответ

4   ответа
3

называется "провалиться" шаблон:

case 1:  // fall through
case 2:  // fall through
case 3: 
   aMethod(); 
   break; 
case 4: 
   anotherMethod(); 
   break; 
5

Конечно, вы можете позволитьcase разделы статей для 1 & 2 к 'провалиться' к пункту 3, а затемbreak внеswitch заявление после этого:

case 1:
case 2:
case 3:
     aMethod();
     break;
case 4:
     anotherMethod();
     break;
В этом случае вы можете позволить 3 "провалиться" 4. Вопрос здесь указывает на то, что 3 и 4 не имеют общей функциональности Reimeus
Ну нет, ты можешьпусть 3 падает до 4. В этом случае все, что сделано для случая 4, всегда будет выполнено и для случая 3, и это будет 3, который будет выполнять дополнительные действия (до провала). Используяswitch, вы можете делать только дополнительные вещидо общие вещи. Если вам нужна другая логика, вам нужно использовать другие управляющие структуры (илиif заявления, вложенные в случаи переключения, которые я считаю уродливыми). Ted Hopp
Что делать, если 3 и 4 имеет некоторую общую часть, а 4 делает некоторые дополнительные вещи Kalpesh Soni
3

Ниже самое лучшее, что вы можете сделать

case 1:
case 2:
case 3:
     aMethod();
     break;
 case 4:
     anotherMethod();
     break;
17
case 1:
case 2:
case 3:
    aMethod();
    break;
case 4:
    anotherMethod();
    break;

потому что когда это происходит в случае 1 (например), оно падает в случае 2 (нетbreak утверждение), которое затем переходит к случаю 3.

Похожие вопросы