Начало работы с Eclipse и J2SE 5.0

Начиная с версии 3.1, в Eclipse реализована полная поддержка новых возможностей J2SE 5.0 ("Tiger"). Важно отметить, что эта поддержка может быть совершенно прозрачна - все, с чем вы привыкли работать в J2SE 1.4, включая редактирование, компиляцию, отладку, быстрые исправления, рефакторинг, действия с кодом, поиск и прочее - будет точно так же работать с новыми типами и конструкциями J2SE 5.0. В этом документе мы опишем дополнительные полезные возможности, которые Eclipse предоставляет при работе с J2SE 5.0.

Предварительные требования

Для того чтобы разрабатывать исходный код с J2SE 5.0, необходима среда выполнения Java? поддерживающая J2SE 5.0. Если первый запуск Eclipse выполнялся с JRE J2SE 5.0, то эта среда будет применяться по умолчанию. В противном случае нужно будет подключить эту среду к Eclipse в окне Opens the Installed JRE preference page Java > Установленные JRE.

В этом документе кратко описаны некоторые новые возможности языка в J2SE 5.0. Он не может заменить собой учебник по этим возможностям. Дополнительная информация приведена в этом разделе.

Уровень совместимости компилятора

Для того чтобы использовать новые конструкции J2SE 5.0, проект должен быть совместим с 5.0 и содержать 5.0 JRE. Новые проекты автоматически будут совместимы с версией 5.0 при выборе 5.0 JRE на первой странице Открывает мастер Создать проект Java мастера Создать проект Java:

Мастер Создать проект

Для того чтобы преобразовать уже существующий проект J2SE 1.4 в J2SE 5.0, выполните следующее:
  1. Убедитесь, что используется JRE J2SE 5.0.
  2. Включите одну из конструкций 5.0 в свой код.
  3. Когда компилятор сообщит об ошибке, используйте быстрое исправление для изменения уровня совместимости проекта:

    Быстрое исправление для J2SE 5.0

Для более тонкой настройки уровень совместимости компилятора можно задать глобально для всей рабочей области (окно Opens the Java compiler preference page Java > Компилятор) или отдельно для каждого проекта (Свойства > Компилятор Java в контекстном меню проекта). В рабочей области могут существовать проекты с различными уровнями совместимости, даже зависящие друг от друга. Тонкой настройке поддаются также сообщения о предупреждениях и ошибках, которые компилятор выдает для проектов. Это можно сделать на странице Свойства > Компилятор Java > Ошибки/предупреждения > Опции J2SE 5.0

Параметризуемые типы

Параметризуемые типы позволяют объектам одного и того же класса безопасно работать с объектами различных типов. Например, тем самым можно обеспечить, что во время компиляции List<String> всегда содержит String, а List<Integer> - Integer.

Обработка параметризуемых типов осуществляется в Eclipse так же, как и непараметризуемых: Кроме того, добавлен новый вид рефакторинга: Вычислить аргументы параметризуемого типа, с помощью которого можно вычислить параметры типа для каждой ссылки на тип в классе, пакете или всем проекте:

Вызов вычисления аргументов параметризуемого типа

При вызове этого рефакторинга получается следующий результат:

Вызов функции Вычислить аргументы параметризуемого типа

В Eclipse есть новые опции для поиска ссылок на параметризуемые типы. Рассмотрим следующий пример:

Пример с четырьмя разными параметризуемыми экземплярами списка

Выберите ссылку на List<Integer>. При вызове Поиск > Ссылки > Проект будут выделены типы List в четырех строках:

Поиск без фильтра

С помощью меню панели Поиск результаты можно отфильтровать:

Отфильтровать несовместимые - останутся только ссылки на типы, для которых можно выполнять присваивание для выбранного типа:

Отфильтровать несовместимые

Отфильтровать неточные - останутся только ссылки на типы с точной сигнатурой:

Неточный фильтр

Аннотации

Аннотации предоставляют мета-данные о том, как применяются методы и типы Java. Они отражаются в исходном коде Java и могут влиять на компиляцию. Их также можно опрашивать во время выполнения. Например, @Override вызовет предупреждение компилятора, если аннотированный метод не переопределяет метод базового класса:

Переопределить аннотацию

Все, что доступно для типов Java, можно делать и с аннотациями:

Очень полезная аннотация в Eclipse - это @SuppressWarnings. Рассмотрим метод типа private, который пока не используется:

Предупреждение: неиспользуемый частный метод

При вызове быстрого исправления для предупреждения будет предложено добавить аннотацию @SuppressWarnings:

Подавлять показываемые предупреждения

Если выбрать это быстрое исправление, аннотация будет добавлена. Компилятор Eclipse обрабатывает аннотацию и не показывает предупреждение для foo:

Подавлять вставленные предупреждения

Перечисления

Перечисление определяет тип, значением которого может являться элемент из заранее определенного набора объектов:

тип перечисления

Все, что доступно для классов Java, можно делать и с перечислениями:

Автоматическое приведение типов (Autoboxing)

Автоматическое приведение типов обеспечивает элегантное оформление кода, в котором простые типы преобразуются в типы объектов:

выделенное автоматическое приведение

В Eclipse обработка автоматического приведения типов выполняется безошибочно, локальным переменным присваиваются правильные типы, и помощник по коду обрабатывает эти ситуации. Для лучшего понимания кода можно помечать случаи автоматического приведения типов как предупреждения при компиляции (раздел Вероятные неполадки при программировании в окне Opens the Errors/Warnings preference page Java > Компилятор > Ошибки/предупреждения) или выделять их цветом (раздел Java > Приведенные типы в окне Opens the Syntax coloring preference page Java > Редактор > Подсветка синтаксиса):

Включение выделения автоматического приведение

Расширенный цикл for

Часто встречается ситуация, когда операцию следует выполнить с каждым элементов из массива или коллекции. В J2SE 5.0 для этого предусмотрена особая конструкция. В Eclipse входит шаблон для кода "foreach" code, который автоматически распознает набор, с которым необходимо выполнить итерацию:

предложенный шаблон foreach

При выборе этого шаблона получается следующий результат:

вставленный шаблон foreach

Eclipse также предлагает быструю помощь "Преобразовать в расширенный цикл for" для обновления циклов for в стиле 1.4 там, где это возможно.

Прочее

Все прочие возможности J2SE 5.0 также поддерживаются инструментами редактирования, поиска и обработки кода в Eclipse. Удачного вам кода!