Что такое уровень языка проекта в IntelliJ IDEA?

Я использую Java 7 SDK и IntelliJ IDEA IDE.

java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

Я все еще не могу использовать функции Java 7. После немного googling я мог бы использовать все функции после установки уровня языка проекта в 7(Diamond, ARM, multicatch etc). Что это такое? Если это имеет некоторое отношение к синтаксису на основе JDK в использовании, что такое level 8(Lambda, annotations etc)? Java 8 еще не выпущен. Java 8 ожидается в марте 2014 года согласно Wiki. Кто-нибудь, пожалуйста, объясните эту концепцию языкового уровня.

3 ответов


на Language level настройка с помощи кода в Редакторе должна поддерживать. Например, если вы используете JDK 1.7, но хотите, чтобы ваш код был совместим с JDK 1.6, вы можете установить уровень языка ниже, чем ваш фактический JDK поддерживает (6.0 в случае JDK 1.6), и получить только рефакторинги/синтаксис, которые поддерживаются на 1.6 и ниже. В зависимости от вашего компилятора он также может предоставить параметры компилятора для удаления поддержки новых синтаксических элементов.

в 8.0 (который, как вы предполагаете, соответствует Java 8) доступен для людей, которые хотят поэкспериментировать с одним из Java 8 снимков что доступны. Поскольку Java 8 не выпущен, уровень языка 8.0 может очень хорошо измениться перед выпуском.


согласно документации в разделе изучение общих настроек проекта на IntelliJ Wiki, уровень языка проекта влияет на intellisense, предоставляемый средой IDE.

Он также диктует поведение компилятора, используемого IntelliJ при компиляции кода Java по мере разработки.

этот параметр сообщает все возможности компилятора, которые будут доступны для проекта. Например, установка языкового уровня JDK 5 позволит IntelliJ распознавать ключевые слова, такие как перечисление, которые присутствуют в исходном коде.


если вы посмотрите на варианты javac команда компилятора Java, вы увидите, что -source и -target параметры позволяют компилировать альтернативные версии Java. Я не уверен, какой опции соответствует настройка уровня языка IntelliJ (скорее всего,-source), но он по существу говорит IntelliJ использовать предоставленный Java SDK (в Project SDK поле) в указанной версии языка Java вместо последней версии, предоставленной указанным SDK.

пока у Вас установлен Java 7, Вы можете установить уровень языка в 6.0, и IntelliJ скомпилирует ваш код против спецификации Java 6 вместо спецификации Java 7. Это включает в себя все предложения в реальном времени и проверку кода, выполняемые по мере ввода.

опция Java 8 существует, вероятно, из-за того, что бета-версии Java 8 доступны для тестирования.

Я никогда не экспериментировал с тем, что произойдет, если вы установите уровень языка на что-то выше, чем JDK версия.