Современные тенденции сделали профессию программиста крайне популярной. Многие отдают предпочтение написанию кодов на Джава. Этот язык не слишком трудно освоиться, особенно если пользователь уже был знаком с машинными кодификациями. Соответствующая «лексика» предусматривает ряд объектов и особенностей. Весьма полезными будут аннотации Java. Но перед тем, как пользоваться подобным элементом, каждый должен разобраться с некоторыми особенностями языкового кода. Без этого в полной мере понять, о чем зайдет речь в статье, не получится при всем желании.
Определение
Java – язык программирования, который является у программеров универсальным. Обладает строгой типизацией. Относится к объектно-ориентированным. Используется повсеместно. А именно, в:
- мобильных разработках;
- научных приложениях;
- суперкомпьютерах;
- компьютерном контенте;
- игровых консолях.
Служит основой большинства типов сетевых утилит. Гибкий, простой в освоении и кроссплатформенный. Имеет различные объекты. Особое внимание уделяют так называемым методам и аннотациям. С ними должен быть знаком даже начинающий разработчик.
Основная терминология
В процессе изучения Java и различных операций в процессе работы над созданием кодов, важно различать ключевые составляющие языка. Они используются программерами постоянно. Далее будут представлены основополагающие, необходимые каждому разработчику на Джаве.
Переменные
Переменные – основные объекты, с которыми предстоит работать пользователю. Это – некий «контейнер», в котором хранятся значения данных, используемых при выполнении тех или иных операций. Минимальная неделимая составляющая приложений.
Бывают:
- ссылочными – используются для объемной «тяжелой» информации;
- примитивными – для небольшого объема сведений.
Для примера стоит рассмотреть следующую запись:
В ней:
- Int – тип переменной (ее объявление);
- x – имя;
- 9 – значение.
Переменные фигурируют во всем написанном коде. Без этой составляющей справиться с поставленными задачами (какими бы они ни были) не получится.
Классы
Класс – это не метод и не аннотация, но тоже весьма важный элемент в Джаве. Представлен шаблонной конструкцией, позволяющей описывать в приложении объекты, а также его свойства и поведение.
Имеет:
- имя;
- ключевое слово – class;
- фигурные скобки, в которых описывается элемент.
Параметрами класса называют переменную, описываемую свойство задействованного объекта. Для примера стоит рассмотреть следующую кодификацию:
Class Pet {
Int weight;
String name;
String type;
}
Здесь weight, name и type – это поля класса Pet.
Виды классов
Джава предусматривает несколько видов классов внутри других:
- вложенные внутренние – нестатические классы внутри внешнего (public class);
- вложенные статистические;
- локальные – расположенные внутри методов;
- анонимные – создаются на ходу.
Внутренние нестатические классы имеют вид:
Статические внутри внешнего:
Локальные:
Анонимные:
Внимание: в записи public static void/public void – неистанцируемый класс-плейсхолдер, в котором содержится ссылка на класс-объект для ключевого слова Void.
Методы
Метод – операция, которая расположена внутри тех или иных свойств. Это действия, осуществляемые над различными элементами в пределах написанного программного код. Некий блок, объявленный внутри класса. Содержит последовательность шагов, предпринимаемых для выполнения поставленных задач.
Отличительной особенностью метода является возможность его многократного использования. Представлена функцией. Чем-то, что способен выполнять выбранный класс.
Аргументы – это то, что требуется передать в метод при вызове оного. Количество параметров здесь не ограничено. Могут указываться через запятую или вовсе не прописываться.
Синтаксис
Для того, чтобы понять, как работает команда на Джаве, стоит разобраться в функционировании каждого элемента System.out.println(). Эта «манипуляция» позволяет осуществлять вывод поля данных любого типа. Имеет прямое отношение к методам.
Здесь:
- System – class, к которому обращается команда при выполнении.
- Out – переменная, предопределенная Output. Принимает поток. Именно сюда обращается System.
- Println() – экземпляр Outputstream, который называется PrintStream. Имеет инструкции, которые позволяют производить обработку данных, отображаемых на дисплее. Сюда будет ссылаться переменная out. Допускается передача аргументов.
Методы способны отвечать за передачу значений переменных любого типа. Для реализации поставленной задачи достаточно ввести без кавычек названием «считываемого» элемента:
Вот передача значения нескольких переменных и различных действий над ними вместе со строчкой:
Внимание: методы, как и весь программный код, может записываться в сокращенном виде. Для этого задействованы специальные «ключевики».
Рефлексия
Рефлексия – это некий механизм исследования информации о приложении во время ее выполнения. Позволяет получать и анализировать сведения о полях, методах, классовых конструкторах.
Внимание: время выполнения программы – промежуток, затрачиваемый на выполнение кода созданной утилиты. То, сколько обрабатывается информация до выдачи непосредственного результата.
Рефлексия в Java отвечает за обработку типов, отсутствующих при компиляции, но возникшие в процессе исполнения утилиты. Используется для исправления ошибок. Помогает писать корректные динамические коды.
Основные возможности соответствующей операции:
- создание экземпляров класса при условии, что его имя неизвестно до непосредственного выполнения кода;
- получение данных о модификаторах классов, полях, методах, суперклассах (пример – lang), конструкторах и константах;
- определение и распознавание классов объектов;
- выяснение того, какие методы относятся к задействованным интерфейсам;
- вызов метода объекта по его имени;
- установка и получение значений полей объекта по именам.
Новички часто путают рефлексию с интроспекцией. Так называют проверку кода и возможность видеть типы объектов во время выполнения. Посредством рефлексии можно вносить корректировки при выполнении утилиты. Для реализации поставленной задачи используется Java Reflection API.
В обычном программировании при наличии доступа к классам и интерфейсам не используется, так как:
- обладает низкой производительностью;
- имеет ограничение системы безопасности;
- нередко приводит к нарушению безопасности утилиты.
А еще кодификации такого типа трудно поддерживать. Они тяжело читаются и отлаживаются. Являются менее гибкими, чем «обычные» коды. И здесь немаловажным элементом становятся аннотации.
Внимание: рефлексия в Java используется редко, новичкам она не так важна и необходима.
Аннотации
Отдельное внимание стоит уделить таким элементам, как аннотации. Они, в отличие от рефлексии в Java, нужны всем программерам. Используются при обычном и рефлексивном написании кодификаций.
Это – некие пометки, посредством которых разработчики указывают компилятору и средствам разработки что делать с теми или иными участками кода кроме исполнения утилиты. Аннотированию подлежат:
- пакеты;
- классы;
- параметры;
- переменные.
Допускается как написание собственных аннотаций, так и использование уже встроенных в Джаву вариаций.
Начинается со знака «@» («собака»). Вот пример стандартной аннотации — @Override. Отвечает за переопределение.
Так, если в имени используемого метода AnotherClass встретится ошибка (опечатка), компилятор примет во внимание аннотацию и покажет сообщение об ошибке. Без этой «операции» произошло бы создание нового метода дополнительно к method из SomeClass.
Внимание: методы в Java тоже могут аннотироваться. Это значительно облегчает поставленные перед программером задачи. Пример рассмотрен выше.
Зачем создаются
Аннотации в Java используются для:
- создания конфигурационных XML-документов и дополнительных кодов на основе исходных;
- документации приложений и баз данных совместно с их разработкой;
- проектирования классов, не используя интерфейсы маркерного типа;
- быстрого подключения зависимости к составляющим приложения;
- выявления ошибок, который компиляторы при обработке кодов не замечают;
- решения иных задач, которые задумал разработчик.
Стоит обратить внимание на маркерные интерфейсы. Если у интерфейса отсутствуют методы, они работают как некие маркеры. То есть, говорят, что объекты задействованных классов должны чем-то выделяться, восприниматься иначе. Маркерные интерфейсы могут называться тегами. Это элементы, которые добавляют общий тег ко всем унаследованным классам, а также объединяющие оные в одну категорию.
Аннотации впервые появились в Джаве EE 5. Тогда они являлись инструментарием, облегчающим работу с большим количеством материала. Разработка крупных веб-интерфейсов и клиентского ПО значительно облегчалась.
Принципы обработки
Компиляторы при помощи аннотаций способны задействовать спецобработчики, которые генерируют новые кодификации и файлы конфигурации. К обработчикам относят библиотеки и софт, который можно копировать от посторонних авторов, после чего прикреплять к собственным проектам в задействованной изначально среде. Метод подключения напрямую зависит от системы сборки или IDE.
Парсинг аннотаций осуществляется циклическим образом. Компилятор сначала ищет их в пользовательском машинном коде, затем выбирает подходящие обработчики. Если вызванный «объект» на основе аннотаций создает новые документы, происходит следующий этап. В качестве исходного будет служить сгенерированный новый код. Действия происходят до тех пор, пока система не создаст все необходимые «электронные документы».
Как быстро создать первую аннотацию в Java
Чтобы лучше понять рассматриваемую тему, стоит попытаться составить собственный «комментарий». Существует веб-сервис, поддерживающий несколько версий одного и того же функционала, задействованного для соблюдения совместимостей. Также имеется обработчик аннотаций. Он дает возможность компилятору выбирать необходимые версии. Сведения об создателях и разработках будут в аннотациях:
Здесь получим дополнительные два атрибута, имеющие вид методов. Но при их объявлении не используется оператор throws, а также не назначаются параметры.
В качестве значений служат:
- иные аннотации;
- массивы;
- всевозможные class или обращения к ним;
- примитивные типы Джава.
В поле author указаны значения по умолчанию. Атрибуты с дефолтной информацией можно пропускать:
А чтобы аннотация использовалась исключительно по назначению, ее стоит объявить и указать, при каких обстоятельствах и где конкретно она должна функционировать:
Теперь остается только ассоциировать аннотацию с нужным class и осуществить запуск приложения.
Базы данных и «комментарии»
А вот ситуация, когда требуется несколько баз данных свести в одну. В этом случае:
- сравниваются поля на поиск одинаковых элементов;
- устраняются дубли;
- вносится «недостающая» информация из каждого источника (так, чтобы была добавлена все сведения без копий).
Дополнительно могут возникать «сторонние» задачи. Что-то – отформатировать, что-то – проигнорировать. В итоге – выдать xls-отчет.
В данном случае аннотации из Java окажутся незаменимы. С их помощью создаются методы обработки каждого поля. А конфигурация получит совершенно «прозрачный» вид. Исходная кодификация получит следующее представление:
// аннотация применяется на уровне полей
@Target(ElementType.FIELD)
// используется при выполнении приложения
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldInspector { //создание «комментария» и присваивание имени
// Выбор необходимости сравнения источников. По умолчанию — да.
boolean compareSources() default true;
/* Получаем формат значения в отчёте, а если не получаем — подставляем формат по умолчанию — native. */
СhooseTheFormat displayFormat() default СhooseTheFormat.NATIVE;
// Получаем ID текущего поля для сопоставления в нескольких базах
int id();
// Уточняем, какое имя использовать для поля в таблице.
String field_name() default "";
// Какие источники сравнивать — формируем список.
TheSource[] sourcesToCompare() default {};
}
Далее происходит ассоциация аннотации с полем. Пример – в БД находятся книжки:
Теперь по умолчанию запускается сверка со всеми БД. Но не у всех книг есть сюжет. Тогда задать источники поиска требуется вручную:
Имеется поле «Примечания», которое не подлежит сверке. Для их хранения поставим аннотацию:
Чтобы правила обработки выбирались от значения поля, стоит связать их с class-обработчика. Он будет выбирать, как действовать. Поможет аннотация:
Можно проверить принцип работы описанного «приложения». Пусть сравнению не подлежат книги, поступившие до 1990 года. Соответствующие материалы хранились в одной базе:
Теперь можно доверить конкретному пользовательскому class’у реагировать на значения года поступления до 1990. Только аннотации в программировании являются статистическими. Разработчик будет работать с тем значением, которое получил изначально. Интерактив с динамической корректировкой значений юзером тут не получится.
О комментариях
Изучая аннотации, важно не запутаться. Некоторые пользователи, особенно начинающие, путают их с так называемыми комментариями. Все – из-за того, что в русском языке соответствующие термины служат синонимами.
Комментарием называют «подсказки», которые разработчик оставляет для самого себя и тех, кто будет изучать код. Это – маркеры-указатели. Пишутся через // и служат своеобразной документацией.