Обзор поддержки JDK 7 в IDE NetBeans
This tutorial needs a review. You can open a JIRA issue, or edit it in GitHub following these contribution guidelines. |
В IDE NetBeans реализована поддержка для новых языковых функций Java 7, таких как оператор diamond, оператор switch для перехода по переменным string, оператор multicatch и т.д. При использовании этих конструкций в коде, среда IDE распознает их, предлагает корректные классы при завершении кода, правильно выделяет ошибки и позволяет автоматически исправлять синтаксис. Таким образом, IDE NetBeans позволяет писать код, соответствующий спецификации языка Java, Java SE 7 Edition.
В этом практическом руководстве вы узнаете, как в IDE обрабатываются языковые конструкции Java 7.

Для работы с этим учебным курсом требуются программное обеспечение и материалы, перечисленные в таблице ниже.
Программное обеспечение или материал | Требуемая версия |
---|---|
версия 7.4 или 8.0 |
|
версия 7 или 8 |
Проверка регистрации JDK 7 в IDE NetBeans
Проверка конфигурации проекта
Проверка пригодности конфигурации проекта для работы с зарегистрированной платформой JDK, включая компиляцию, запуск и отладку:
-
Создайте проект Java (выберите 'Файл > Создать проект', затем в списке 'Тип проекта' выберите 'Приложение Java').
-
Нажмите кнопку "Далее".
-
В качестве имени проекта введите
SwitchTest
и укажите его местоположение. -
Нажмите 'Готово'.
-
В окне 'Проекты' щелкните правой кнопкой мыши узел проекта
SwitchTest
и выберите 'Свойства > Библиотеки'. Убедитесь, что в списке 'Платформы Java' на этой вкладке выбрана версия JDK 1.7.
-
В окне 'Свойства проекта' перейдите на вкладку 'Исходный код'. В списке 'Исходный/двоичный формат' должна быть выбрана версия JDK 7.
-
Нажмите кнопку "ОК" для закрытия диалогового окна "Свойства проекта". Ваш проект настроен для работы с компонентами языка Java 7.
Использование новых языковых конструкций JDK 7: оператор переключения
JDK 7 содержит множество новых функций и расширений в различных аспектах, в том числе при интернационализации, вводе-выводе, работе с сетью, безопасности и т.д. Для ознакомления с поддержкой JDK 7 в редакторе Java среды IDE проще всего продемонстрировать некоторые изменения, введенные в проекте Coin.
Одним из таких изменений является использование типа String в операторе switch. В предыдущих версиях Java аргументами оператора switch
могли быть только такие простейшие типы данных как byte
, short
, char
, int
и enum
. Начиная с JDK 7, аргументы типа String
также можно использовать в выражении оператора switch
.
-
Откройте файл
SwitchTest.java
и вставьте следующий код. В этом примере отображаются коды RGB для различных цветов. JDK 7 позволяет переменнойcolor
иметь типString
.
package switchtest;
public class SwitchTest {
public static void main(String[] args) {
String color = "red";
String colorRGB;
switch (color.toLowerCase()) {
case "black": colorRGB = "000000"; break;
case "red": colorRGB = "ff0000"; break;
case "green": colorRGB = "008000"; break;
case "blue": colorRGB = "0000ff"; break;
default: colorRGB = "Invalid color"; break;
}
System.out.println(colorRGB);
}
}
Если вставленный код некорректно форматируется в редакторе, нажмите сочетание клавиш ALT+SHIFT+F для выполнения повторного форматирования.
-
В окне 'Проекты' щелкните правой кнопкой мыши узел проекта и выберите 'Запустить файл'. На экране отобразится вывод приложения, который представляет собой код RGB для красного цвета. Таким образом, сборка выполнена успешно, а приложение успешно работает при указании целевой платформы и исходного формата JDK 7.

-
Вернемся к JDK 6 и проверим компилирование приложения с помощью компилятора JDK 6. В окне 'Проекты' щелкните правой кнопкой мыши узел проекта и выберите 'Свойства'. В категории 'Источники' в списке 'Исходный/двоичный формат' выберите
JDK 6
и нажмите ОК. Сразу видно, что синтаксический анализатор JDK6 не распознает синтаксис. Компиляция завершается с ошибкой из-за несовместимого типа переменной.
-
Теперь перепишите код, используя оператор
if-then-else
вместо оператораswitch
:
package switchtest;
public class SwitchTest {
public static void main(String[] args) {
String color = "red";
String colorRGB;
if (color.equals("black")) {
colorRGB = "000000";
} else if (color.equals("red")) {
colorRGB = "ff0000";
} else if (color.equals("green")) {
colorRGB = "008000";
} else if (color.equals("blue")) {
colorRGB = "0000ff";
} else {
colorRGB = "Invalid color";
}
System.out.println(colorRGB);
}
}
Если в качестве исходного/двоичного формата выбрана версия JDK 7, IDE распознает такие случаи и предлагает преобразовать их в switch
, как показано на рисунке.
Щелкните подсказку, и конструкция if-then-else
будет автоматически преобразована в конструкцию switch
, которая использовалась ранее.
Поддержка JDK 7: дополнительные примеры
Чтобы проиллюстрировать возможности распознавания и автоматического исправления кода в редакторе Java среды IDE для обеспечения совместимости со спецификациями языка JDK 7, воспользуемся фрагментом кода, который не имеет смысла, но содержит все основные улучшения.
При анализе этого фрагмента кода и применении подсказок редактора будут продемонстрированы следующие возможности.
-
Автоматический вывод типов, при котором компилятор Java определяет тип общего экземпляра без необходимости его явного указания. Так называемый оператор "бубна" позволяет отметить случаи вывода типа.
-
Улучшенная обработка исключений или мультизахват, при котором один блок
catch
может использоваться для нескольких типов исключений. -
Новый синтаксис операторов закрытия ресурсов, используемый функцией автоматического управления ресурсами.
-
Замените существующий код приложения в том же файле
SwitchTest.java
следующим кодом:
-
package switchtest;
import java.io.FileInputStream;
import java.lang.reflect.Method;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class SwitchTest {
public void test() throws IOException {
List<String> list = new ArrayList<String>();
HashMap<String, Integer> map = new HashMap<String, Integer>();
HashMap<String, Integer> map2 = new HashMap<String, Integer>();
String a = "ehlo";
try {
Method m = Object.class.getMethod("toString");
m.invoke(this);
} catch(NoSuchMethodException e) {
e.printStackTrace();
} catch(InvocationTargetException e) {
e.printStackTrace();
} catch(IllegalAccessException e) {
e.printStackTrace();
}
FileInputStream in = null;
try {
in = new FileInputStream("foo.txt");
int k;
while ((k = in.read()) != -1) {
System.out.write(k);
}
} finally {
if (in != null) {
in.close();
}
}
}
}
-
Обратите внимание, что в среде IDE отображаются подсказки по оптимизации кода в соответствии со спецификациями JDK 7. Щелкните подсказки и выберите предложенные действия.
-
По принятии всех предложений будет создан код, совместимый с JDK 7. Этот код будет выглядеть так же, как код, показанный ниже.
link:/about/contact_form.html?to=3&subject=Feedback: Overview of JDK 7 Support in NetBeans IDE[Отправить отзыв по этому учебному курсу]
См. также
Дополнительные сведения о JDK 7 и IDE NetBeans см.:
-
Настройка целевого JDK в документе Разработка приложений с помощью NetBeans IDE
-
Учебные курсы по Java: ввод-вывод файлов — раздел учебных курсов Java, содержащий многочисленные примеры об изменениях JDK 7 во вводе-выводе.
-
Учебные курсы по Java: ветвление и объединение — описание новой платформы ветвления и объединения в JDK7.
Дополнительные сведения о разработке приложений в IDE NetBeans см. следующие ресурсы:
-
Создание проектов Java в документе Разработка приложений в IDE NetBeans