Почему я не могу использовать оператор switch для String? - PullRequest
963 голосов
/ 03 декабря 2008

Эта функция будет добавлена ​​в более позднюю версию Java?

Может кто-нибудь объяснить, почему я не могу сделать это, например, в техническом смысле, как работает оператор switch в Java?

Ответы [ 14 ]

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(this);
0 голосов
/ 06 января 2016

Когда вы используете intellij, посмотрите также:

Файл -> Структура проекта -> Проект

Файл -> Структура проекта -> Модули

Если у вас несколько модулей, убедитесь, что вы установили правильный уровень языка на вкладке модуля.

0 голосов
/ 05 июня 2015
public class StringSwitchCase { 

    public static void main(String args[]) {

        visitIsland("Santorini"); 
        visitIsland("Crete"); 
        visitIsland("Paros"); 

    } 

    public static void visitIsland(String island) {
         switch(island) {
          case "Corfu": 
               System.out.println("User wants to visit Corfu");
               break; 
          case "Crete": 
               System.out.println("User wants to visit Crete");
               break; 
          case "Santorini": 
               System.out.println("User wants to visit Santorini");
               break; 
          case "Mykonos": 
               System.out.println("User wants to visit Mykonos");
               break; 
         default: 
               System.out.println("Unknown Island");
               break; 
         } 
    } 

} 
0 голосов
/ 29 ноября 2012

Это легкий ветерок в Groovy; Я встраиваю groovy jar и создаю служебный класс groovy, чтобы делать все эти и другие вещи, которые я считаю раздражающими в Java (поскольку я застрял на Java 6 на предприятии.)

it.'p'.each{
switch (it.@name.text()){
   case "choclate":
     myholder.myval=(it.text());
     break;
     }}...
...