Возможно ли иметь переключатель (java.lang.Object) в Java? - PullRequest
11 голосов
/ 04 декабря 2010

Мое приложение должно иметь оператор регистра переключателя типа String.

Мне нужно что-то вроде этого:

    Object list1 = "list1";
    Object list2 = "list2";
    Object list3 = "list3";

    Object option = "list1";
    switch (option) {
        case list1: // Do something
        case list2: // Do something
        case list3: // Do something
        default:    // Do something
    }

Возможно ли иметь?

РЕДАКТИРОВАТЬ:

Лучше ли использовать корпус переключателя для n условий, а не для if и else?Пожалуйста, прокомментируйте это?

Ответы [ 6 ]

11 голосов
/ 04 декабря 2010

Поскольку вы включаете строки, я предполагаю, что строки известны во время компиляции. В этом случае вы можете использовать enum.

    public enum MyStrings{

        LIST1, LIST2
    }

Тогда

    switch(MyStrings.valueOf(option)){

         case LIST1: do something; break;
         //etc.
    }
3 голосов
/ 04 декабря 2010

См. Этот вопрос: Почему я не могу включить строку?

В настоящее время не поддерживается, но ожидается, что будет в Java 7.

Редактировать: фактическиПохоже, что это String s, а не Object s

Возможно, каждый объект должен реализовывать метод, содержащий логику, которую вы пытаетесь вставить в оператор switch?

2 голосов
/ 26 августа 2015

В выпуске JDK 7 вы можете использовать объект String в выражении оператора switch: http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html

0 голосов
/ 17 сентября 2017

Переключатель может поддерживаться для проверки String, Integer и других примитивных типов данных, но он не одобрен в сравнении объектов.

0 голосов
/ 07 декабря 2010

Нет, используйте другие коллекции, такие как Hashmap, или используйте индексы массива, чтобы сделать то же самое, создайте массив элементов и поместите регистр переключения в индекс

0 голосов
/ 04 декабря 2010

Нет, вы не можете сделать это (попробуйте и узнайте). Но если вы хотите этого, возможно, карта, такая как HashMap, лучше подходит для ваших целей.

...