У меня есть проект в IntelliJ IDEA, который компилируется с JDK 11, но нацелен на уровень языка Java 10.
Моя проблема в том, что IntelliJ позволяет мне использовать, даже предлагает в автозаполнении, функции Java 11, такие как Optional#isEmpty
.
Нет никаких признаков того, что я что-то сделал не так, пока я не соберусь и компилятор не пожалуется.
Поскольку я ориентируюсь на уровень языка Java 10, я ожидал, что IntelliJ не будет предлагать Java11+ функций.Есть ли параметр, который я пропускаю, или мои ожидания слишком высоки?
В структуре проекта -> Настройки проекта -> Проект:
Project SDK - 11 и Project Language Level - 10.
Для всех модулей установлен уровень языка "Проект по умолчанию (10 - вывод типа локальной переменной)" .
В настройках -> Построение, выполнение, развертывание -> Компилятор ->Компилятор Java:
Версия байт-кода проекта в целом равна 10, и для каждого модуля.
В Gradle у меня есть:
sourceCompatibility = JavaVersion.VERSION_1_10
targetCompatibility = JavaVersion.VERSION_1_10
Я использую IntelliJ IDEA 2018.3 (Ultimate Edition) Build# IU-183.4284.148