Оператор переключения Java 7 со строками не работает - PullRequest
10 голосов
/ 03 июня 2011

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

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

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

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

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

Есть идеи?

Ответы [ 3 ]

12 голосов
/ 03 июня 2011

Несмотря на то, что команда JDT реализовала функцию Switch on String , поддержка 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 для заинтересованных сторон.

1 голос
/ 03 июня 2011

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

0 голосов
/ 12 августа 2011

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

...