Switch Case со строкой Java - PullRequest
       1

Switch Case со строкой Java

3 голосов
/ 13 января 2012

Я использовал java спустя долгое время и обнаружил, что в отличие от других языков java не поддерживает переключение регистра со строками (только с no и enums). В чем причина этого? Если другие языки реализуют это легко, почему бы не Java?

Ответы [ 6 ]

12 голосов
/ 13 января 2012

Эта функция была реализована в Java 7 (которая была выпущена в июле этого года).Почему они не реализовали это раньше?Ну, J7 был действительно отложен из-за полного приобретения Sun компанией Oracle.

Последняя документация: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

5 голосов
/ 13 января 2012

IMO, разработчики Java были умны, чтобы не включать Strings. Каждый раз, когда вы переключаете строку (и, я признаю, я делаю это иногда), вы должны думать:

  1. Почему я не использую здесь полиморфизм?
  2. По крайней мере, я должен использовать Enum вместо этого?
2 голосов
/ 13 января 2012

Начиная с Java 7, вы можете использовать переключатель со строками. см .: случай переключения Java

2 голосов
/ 13 января 2012

Вы можете использовать строки в выражениях switch начиная с Java 7.

0 голосов
/ 01 июня 2017

Не очень красиво, но вот другой способ для Java 6 и ниже:

String runFct = 
        queryType.equals("eq") ? "method1":
        queryType.equals("L_L")? "method2":
        queryType.equals("L_R")? "method3":
        queryType.equals("L_LR")? "method4":
            "method5";
Method m = this.getClass().getMethod(runFct);
m.invoke(queryField);
0 голосов
/ 22 сентября 2012

Новая версия Java (JDK 7) занимает много времени для выпуска. Вот почему вы не можете знать это .... Вот пример того, как использовать строки в случае переключателя ...

   option = scanner.nextLine();
   switch (option) {
    case "1": System.out.println("Hello");break;
    case "2": break;
    case "3": break;
    case "4": break;
    case "5": break;
    default: System.out.println("Invalid option. Please try again..."); break;
  }
...