Оператор switch Java 7 со строками не работает

Согласно учебникам по Java в Java SE 7 и более поздних версий можно использовать объект String в выражении оператора switch.

String s = ...
switch(s){
    //do stuff
}

Но так ли это? Я установил JRE и добавил его в путь сборки моего проекта Eclipse, но получаю следующую ошибку времени компиляции:

Невозможно включить значение типа String. Разрешены только конвертируемые значения int или константы перечисления.

Кроме того, я думаю, что настроил его правильно, так как смог использовать его класс java.nio.file.Files, а также JLayer.

Любые идеи?


person mre    schedule 03.06.2011    source источник
comment
У вас есть последняя версия Eclipse IDE с поддержкой Java 7? Какую версию вы используете? Eclipse предлагает собственный компилятор Java!   -  person Daniel    schedule 03.06.2011
comment
Да, попробуйте скомпилировать его вне Eclipse и посмотреть, работает ли он.   -  person    schedule 03.06.2011
comment
@ Даниэль, наверное, я наивен, когда дело доходит до IDE. Я думал, что настройка пути сборки с помощью соответствующей JRE исправит ситуацию, поскольку функции, специфичные для jdk7, компилируются и запускаются с использованием Eclipse. Думаю, я был просто застигнут врасплох, когда эта функция также не компилировалась/не запускалась. Надеюсь, вы не иронизировали...   -  person mre    schedule 04.06.2011
comment
Поскольку Eclipse поддерживает частичную компиляцию классов и создает допустимые файлы классов, даже если отдельные функции содержат ошибки компиляции, ему просто нужен собственный компилятор. Кроме того, компилятор Eclipses поддерживает инкрементную компиляцию и т. д. Просто используйте последнюю версию eclipse, и все готово.   -  person Daniel    schedule 04.06.2011


Ответы (3)


Несмотря на то, что команда JDT реализовала функция включения строки, поддержка Java 7 не будет до Eclipse 3.7.1:

См. ошибку 288548:

Из-за поздней доступности JSR-292 (Invoke Dynamic) и JSR-334 (Project Coin), а также из-за официальной даты выпуска (28 июля 2011 г.) Java 7 после выхода версии 3.7, нам пришлось отложить поддержку Java 7 до версии 3.7. .1. Пока не решено, будет ли это доступно как часть загрузки 3.7.1 или как отдельное обновление функций.

Работа над функциями Java 7 в настоящее время ведется в ветке «BETA_JAVA7», и мы будем предоставлять отдельные обновления для стабильных сборок, чтобы обеспечить ранний доступ к функциям Java 7 для заинтересованных сторон.

person VonC    schedule 03.06.2011
comment
Есть дата выхода 3.7.1? В тот же день? - person Bart van Heukelom; 21.07.2011
comment
@Bart: См. wiki.eclipse.org/Indigo/Simultaneous_Release_Plan#SR1 Общая оценка: 9 /23/2011 (четвертая пятница сентября) - person VonC; 21.07.2011
comment
через 2 месяца? Ой... Ну ладно, я просто использую бета-версию. - person Bart van Heukelom; 21.07.2011

Eclipse пока не поддерживает компиляцию на JDK 7, чтобы попробовать новую функцию, вам нужно использовать NetBeans 7 или скомпилировать со стандартным компилятором javac в комплекте JDK 7 вручную или с помощью ant-скрипта.

person aleroot    schedule 03.06.2011

Используйте Eclipse 3.8 (первая веха наступила несколько дней назад). Не забудьте установить в настройках компилятора Java 7.

person Hannes Licht    schedule 12.08.2011