| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = Поддержка обработчиков аннотаций в IDE NetBeans. Часть I. Использование проекта Lombok |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Поддержка обработчиков аннотаций в IDE NetBeans. Часть I. Использование проекта Lombok - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Поддержка обработчиков аннотаций в IDE NetBeans. Часть I. Использование проекта Lombok |
| |
| image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"] |
| |
| |
| * *Использование проекта Lombok для пользовательских аннотаций* |
| |
| Для демонстрации принципов работы нестандартных аннотаций в IDE NetBeans используется проект Lombok, обеспечивающий удобный способ автоматического создания нескольких элементов кода Java, таких как методы получения, методы установки, конструкторы и другие. Дополнительные сведения о функциях проекта приведены на link:http://projectlombok.org/[+странице проекта Lombok+]. Следует, однако, помнить, что проект Lombok включает в себя ряд функций, которые могут работать не во всех средах разработки. |
| |
| *Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.* |
| |
| |=== |
| |Программное обеспечение или материал |Требуемая версия |
| |
| |link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |7.2, 7.3, 7.4, 8.0 |
| |
| |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |версия 7 или 8 |
| |
| |link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] |версия 1.12.4 и более поздние |
| |=== |
| |
| |
| == Создание проекта Java |
| |
| В этом упражнении необходимо создать простой проект Java и класс с именем ``MyBooks.java`` для демонстрации аннотаций в действии. |
| |
| 1. Выберите *Файл > Новый проект* в главном меню, чтобы открыть мастер создания проектов. |
| 2. В списке 'Тип проекта' в категории 'Java' выберите 'Приложение Java'. Нажмите 'Далее'. |
| 3. Введите на странице "Имя и местоположение" мастера текст * ``TestAnn`` * в качестве имени проекта. |
| 4. Введите * ``testann.TestBooks`` * в поле "Создать главный класс", чтобы заменить имя класса по умолчанию. Нажмите кнопку "Завершить". |
| image::images/newproj.png[title="Создание нового проекта Java в IDE NetBeans"] |
| |
| После нажатия кнопки "Готово" среда IDE создаст проект приложения Java и откроет класс ``TestBooks.java`` в редакторе. Как вы можете видеть, теперь новый проект отображается в окне "Проекты", а класс ``TestBooks.java`` находится в пакете ``testann`` в узле "Исходные файлы". |
| |
| |
| |
| . Правой кнопкой мыши щелкните узел с пакетом ``testann`` в окне "Проекты", затем выберите "Создать" > "Класс Java". |
| |
| |
| . Введите * ``MyBooks`` * в поле "Имя класса" и подтвердите создание класса в пакете ``testann`` . Нажмите кнопку "Завершить". |
| |
| После нажатия кнопки "Готово" среда IDE откроет новый класс в редакторе. |
| |
| |
| |
| . В редакторе исходного кода добавьте три следующих поля в ``MyBooks.java`` . |
| |
| [source,java] |
| ---- |
| |
| package testann; |
| |
| public class MyBooks { |
| *private int year; //fields |
| private String title; |
| private String author;* |
| |
| } |
| ---- |
| |
| |
| . Поместите курсор в объявление класса и нажмите сочетание клавиш CTRL+ПРОБЕЛ для вызова функции автозавершения кода редактора. |
| |
| |
| . Выберите ``MyBooks (int year, String title, String author) - generate`` в списке автозавершения кода, чтобы создать конструктор для ``MyBooks.java`` . |
| image::images/generate-constructor.png[title="Автозавершение кода для создания конструктора"] |
| |
| |
| . Сохраните изменения. |
| |
| |
| == Активация пользовательских аннотаций (lombok.jar) для проекта |
| |
| В этом упражнении необходимо изменить окно свойств проекта, чтобы добавить библиотеку в путь к классу проекта и включить обработку аннотаций в редакторе. |
| |
| 1. Загрузите файл link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] и сохраните его в системе. |
| 2. Щелкните правой кнопкой мыши узел проекта ``TestAnn`` и выберите команду "Свойства". |
| 3. Выберите категорию "Библиотеки" в диалоговом окне "Свойства проекта". |
| 4. Нажмите кнопку "Добавить JAR/папку" во вкладке "Компиляция" и перейдите к загруженному файлу ``lombok.jar`` . |
| image::images/properties1.png[title="Категория 'Библиотеки' в окне 'Свойства'"] |
| |
| Ресурсы, добавленные на вкладке "Компиляция", соответствуют параметру ``-classpath`` link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html#options[+компилятора Java+]. Поскольку файл ``lombok.jar`` является отдельным файлом JAR, содержащим определения аннотаций и процессоры аннотаций, его необходимо добавить в путь к классам проекта, соответствующий вкладке "Компиляция". |
| |
| |
| |
| . Выберите в окне "Свойства проекта" категорию "Компиляция". |
| |
| |
| . Убедитесь, что флажок "Включить обработку аннотаций" установлен (параметр активирован по умолчанию). Также установите флажок "Включить обработку аннотаций в редакторе". |
| image::images/properties2.png[title="Выберите в окне "Свойства проекта" категорию "Компиляция"."] |
| |
| Параметр "Включить обработку аннотаций" активирует обработку аннотаций при построении и компиляции проекта. Если флажок не установлен, параметр ``-proc:none`` передается в компилятор Java, и компиляция выполняется без обработки аннотаций. Таким образом, при необходимости обработки аннотаций необходимо установить флажок "Включить обработку аннотаций". |
| |
| При установке флажка "Включить обработку аннотаций в редакторе" результаты обработки аннотаций становятся видимыми в редакторе. Дополнительные артефакты, созданные процессорами аннотаций (классы, методы, поля и др.), становятся видимыми в редакторе среды IDE и доступными для функции автозавершения кода, навигатора, перехода к типу, поиска случаев использования и пр. |
| |
| |
| |
| . В окне "Свойства проекта" нажмите кнопку "ОК" и вернитесь в файл ``MyBooks.java`` . |
| |
| Развернув узел "Библиотеки" в окне "Проекты", вы увидите, что теперь файл ``lombok.jar`` находится в списке библиотек проекта. |
| |
| image::images/projects-window.png[title="узел 'Библиотеки' в окне 'Проекты'"] |
| |
| |
| == Создание приложения при помощи пользовательских аннотаций Lombok |
| |
| 1. Введите в файле ``MyBooks.java`` текст ``@Data`` перед объявлением класса ``MyBooks`` . ``@Data`` представляет собой аннотацию, создающую шаблонный код для классов Java: методы получения для всех полей, методы установки для всех неполных полей и соответствующие реализации ``toString`` , ``equals`` и ``hashCode`` , включающие в себя поля класса. |
| |
| Дополнительные сведения об аннотациях, поддерживаемых в проекте Lombok, приведены в разделе link:http://projectlombok.org/features/index.html[+Обзор функций+] Lombok. |
| |
| |
| |
| . Щелкните всплывающую подсказку в левом поле редактора и добавьте импорт для ``lombok.Data`` . |
| image::images/import-lombok.png[title="Подсказка в редакаторе для импорта lombok"] |
| |
| Итоговый код в редакторе должен выглядеть следующим образом: |
| |
| |
| [source,java] |
| ---- |
| |
| package testann; |
| |
| import lombok.Data; |
| |
| |
| @Data |
| public class MyBooks { |
| |
| private int year; //fields |
| private String title; |
| private String author; |
| |
| public MyBooks(int year, String title, String author) { |
| this.year = year; |
| this.title = title; |
| this.author = author; |
| } |
| } |
| ---- |
| |
| Обратите внимание, что необходимые артефакты кода, например методы получения, методы установки, toString и другие созданы и отображаются в окне навигатора. Аннотация ``@Data`` создала весь шаблонный код, необходимый для типичного класса. |
| |
| image::images/nav.png[title="Окно 'Навигатор', в котором отображаются участники проекта"] |
| |
| Можно также вызвать окно автозавершения кода (CTRL+ПРОБЕЛ) и проверить доступность созданных артефактов для выбора. Теперь необходимо убедиться, что проект выполняет компиляцию, а созданные артефакты можно вызвать из других компонентов программы. |
| |
| |
| |
| . Откройте файл ``TestBooks.java`` с методом _main_ и добавьте следующий код (выделен полужирным шрифтом), чтобы создать новый объект класса ``MyBooks`` . |
| |
| [source,java] |
| ---- |
| |
| package testann; |
| |
| public class TestBooks { |
| |
| public static void main(String[] args) { |
| *MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");* |
| } |
| } |
| ---- |
| |
| |
| . Добавьте следующий код, который выводит на экран значения переменной ``books`` . |
| |
| Для возврата значений следует вызвать методы получения, автоматически созданные в файле ``lombok.jar`` . Обратите внимание, что при вводе автоматически созданные артефакты доступны в окне автозавершения кода. |
| |
| |
| [source,java] |
| ---- |
| |
| package testann; |
| |
| public class TestBooks { |
| |
| public static void main(String[] args) { |
| MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith"); |
| *System.out.println("Year: " + books.getYear() + ", Title: " + books.getTitle() + ", Author: " + books.getAuthor());* |
| } |
| } |
| ---- |
| |
| |
| . Сохраните изменения. |
| |
| |
| . Щелкните правой кнопкой мыши узел проекта в окне "Проекты" и выберите команду "Выполнить" (F6). |
| |
| После запуска приложения на экране должны отобразиться следующие выходные данные, демонстрирующие успешность компиляции. |
| |
| image::images/output.png[title="Окно вывода после запуска приложения"] |
| |
| Таким образом, артефакты, созданные при помощи обработчика аннотаций Lombok, доступны из других компонентов программы. |
| |
| |
| == Что дальше? |
| |
| * Документация Java SE - link:http://download.oracle.com/javase/6/docs/technotes/guides/language/annotations.html[+Аннотации+] |
| * Учебный курс Java SE - link:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html[+Аннотации+] |
| link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+] |