Я смотрю тему аннотаций в документации Oracle . И глядя на этот пример:
@ClassPreamble (
author = "John Doe",
date = "3/17/2002",
currentRevision = 6,
lastModified = "4/12/2004",
lastModifiedBy = "Jane Doe",
// Note array notation
reviewers = {"Alice", "Bob", "Cindy"}
)
public class Generation3List extends Generation2List {
// class code goes here
}
Я до сих пор не понимаю, что это может сделать для меня. Например, если я удалю аннотацию, она все равно будет работать; Итак, для чего они обычно используются? Мне объяснили, что они используются для интерфейсов, но пока я не понял.
Интересный вопрос, в который я хочу внести свою песчинку.
Что такое @нотации?
Аннотации — это форма метаданных, предоставляющая данные о программе, которые не являются частью самой программы. Аннотации не оказывают прямого влияния на поведение кода, который они аннотируют.
Аннотации имеют ряд применений, в том числе:
Основы аннотации
Формат аннотации
В самом простом виде аннотация выглядит следующим образом:
Символ знака (
@
) указывает компилятору, что далее следует аннотация. В следующем примере имя аннотацииOverride
:Аннотация может включать элементы , которые могут быть именованными или безымянными, и для этих элементов есть значения:
Если имеется только один элемент с именем value, имя можно опустить, например:
Если в аннотации нет элементов, круглые скобки можно опустить, как показано в файле
@Override
.Также можно использовать несколько аннотаций в одном объявлении:
Если аннотации имеют одинаковый тип, то это называется повторяющейся аннотацией:
Повторяющиеся аннотации поддерживаются начиная с Java SE 8. Дополнительные сведения см. в разделе Повторяющиеся аннотации .
Тип аннотации может быть одним из типов, определенных в Java SE API
java.lang
или пакетах.java.lang.annotation
В приведенных выше примерахOverride
иSuppressWarnings
являются предопределенными аннотациями Java. Также возможно определить свой собственный тип аннотации. АннотацииAuthor
иEbook
в приведенном выше примере являются пользовательскими типами аннотаций.Где я могу использовать аннотации?
Аннотации можно применять к объявлениям: объявлениям классов, полей, методов и других элементов программы. При использовании в объявлении каждая аннотация обычно появляется, по соглашению, в отдельной строке.
Начиная с версии Java SE 8 аннотации также можно применять к использованию типов. Вот некоторые примеры:
Выражение создания экземпляра класса:
new @Interned MyObject();
Тип выпуска:
MyString = (cadena @NonNull) str;
пункт
implements
:class UnmodifiableList<T> implements @Readonly List<@Readonly T> { ... }
Заявление об исключении:
void monitorTemperature() throws @Critical TemperatureException { ... }
Эта форма аннотации называется аннотацией типа . Дополнительные сведения см. в разделе Аннотации типов и подключаемые системы типов .
Объявление типа аннотации
Многие аннотации заменяют комментарии в коде.
Предположим, группа разработчиков программного обеспечения традиционно начинает тело каждого класса с комментариев, которые предоставляют важную информацию:
Чтобы добавить те же самые метаданные с аннотацией, вы должны сначала определить тип аннотации. Синтаксис для этого:
Определение типа аннотации похоже на определение интерфейса в том, что ключевому слову interface предшествует знак at (@) (@ = AT, как в типе аннотации). Типы аннотаций — это форма интерфейса, которая будет рассмотрена в следующем уроке. На данный момент разбираться в интерфейсах не обязательно.
Тело приведенного выше определения аннотации содержит объявления элементов типа аннотации, которые очень похожи на методы. Обратите внимание, что они могут определять необязательные значения по умолчанию.
Как только тип аннотации определен, вы можете использовать аннотации этого типа с заполненными значениями следующим образом:
Примечание: Чтобы информация
@ClassPreamble
появилась в документации, созданной Javadoc, вы должны аннотировать определение@ClassPreamble
с помощью аннотации@Documented
:И еще
Если вы хотите получить докторскую степень по @notations, я оставлю эти ссылки, завершающие руководство по документации по Java:
У меня также были сомнения по поводу аннотаций, пока я не прочитал эту очень простую и хорошо объясненную СРЕДНЮЮ публикацию https://medium.com/@alvareztech/java-annotations-b8ae69739b4e . Я надеюсь, что вы найдете это полезным.
Я привожу вам пример широко используемых аннотаций, @override говорит компилятору переопределить метод родительского класса, конечно, это когда есть наследование класса.