2013-07-18 4 views
48

Я использую Java 7 SDK и IntelliJ IDEA IDE.Что такое уровень проектного языка в IntelliJ IDEA?

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

ответ

69

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

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

+0

Знаете ли вы, что эти настройки, которые устанавливают, какие функции поддержки кода в редакторе должны поддерживать встроенные в среду IDE или они извлекаются через сеть с обновлениями? –

+0

@AniketThakur Кажется, что он обновлен вместе с самой IDE, по крайней мере, я никогда не замечал изменений, которые не соответствовали обновлению IDE. –

+0

ok gr8. Благодаря! –

3

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

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

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

3

Если вы посмотрите на options for the javac Java compiler command, вы увидите, что параметры и -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.