Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Типы аннотаций Java

Типы аннотаций Java

В этом руководстве мы узнаем о различных типах аннотаций Java с помощью примеров.

Аннотации Java — это метаданные (данные о данных) для исходного кода нашей программы. Java SE предоставляет несколько предопределенных аннотаций. Кроме того, мы также можем создавать собственные аннотации в соответствии с нашими потребностями.

Если вы не знаете, что такое аннотации, посетите учебник по аннотациям Java.

Эти аннотации можно разделить на следующие категории:

1. Предопределенные аннотации

2. Пользовательские аннотации

3. Мета-аннотации

<час>

Предопределенные типы аннотаций

1. @Устарело

102 аннотация – это аннотация-маркер, указывающая, что элемент (класс, метод, поле и т. д.) устарел и заменен новым элементом.

Его синтаксис:

09

Когда программа использует элемент, объявленный устаревшим, компилятор выдает предупреждение.

Мы используем Javadoc 118 тег для документирования устаревшего элемента.

18

Пример 1:Пример аннотации @Deprecated

26

Вывод

30
<час>

2. @Переопределить

120 аннотация указывает, что метод подкласса переопределяет метод суперкласса с тем же именем метода, типом возвращаемого значения и списком параметров.

Не обязательно использовать 130 при переопределении метода. Однако, если мы его используем, компилятор выдает ошибку, если что-то не так (например, неправильный тип параметра) при переопределении метода.

Пример 2:Пример аннотации @Override

48

Вывод

56

В этом примере, создав объект dog1 Собака класса, мы можем вызвать его метод printMessage() который затем выполняет 140 заявление.

С 151 определен в обоих классах, метод подкласса Dog переопределяет метод суперкласса Animal . Следовательно, 168 подкласса.

<час>

3. @SuppressWarnings

Как следует из названия, 176 аннотация предписывает компилятору подавлять предупреждения, генерируемые во время выполнения программы.

Мы можем указать тип предупреждений, которые должны быть подавлены. Предупреждения, которые можно подавить, зависят от компилятора, но есть две категории предупреждений:устаревшие и не проверено .

Чтобы подавить определенную категорию предупреждений, мы используем:

69

Например,

71

Чтобы подавить несколько категорий предупреждений, мы используем:

87

Например,

97

Категория 188 указывает компилятору подавлять предупреждения, когда мы используем устаревший элемент.

Категория 194 указывает компилятору подавлять предупреждения, когда мы используем необработанные типы.

И неопределенные предупреждения игнорируются. Например,

105 

Пример 3:Пример аннотации @SuppressWarnings

112

Вывод

127

Здесь 206 был помечен как устаревший и при использовании будет выдавать предупреждения компилятора. С помощью 216 аннотации, мы можем избежать предупреждений компилятора.

<час>

4. @SafeVarargs

229 аннотация утверждает, что аннотированный метод или конструктор не выполняет небезопасных операций со своими varargs (переменное число аргументов).

Мы можем использовать эту аннотацию только для методов или конструкторов, которые нельзя переопределить. Это связано с тем, что переопределяющие их методы могут выполнять небезопасные операции.

До Java 9 мы могли использовать эту аннотацию только в окончательных или статических методах, потому что они не могут быть переопределены. Теперь мы можем использовать эту аннотацию и для закрытых методов.

Пример 4:Пример аннотации @SafeVarargs

132

Предупреждения

144

Вывод

157

Здесь 230 240 указывает аргумент переменной длины типа 259 . Это означает, что метод 263 может иметь ноль или более аргументов.

Приведенная выше программа компилируется без ошибок, но выдает предупреждения, когда 276 аннотация не используется.

Когда мы используем 285 аннотация в приведенном выше примере,

163

Мы получаем тот же вывод, но без каких-либо предупреждений. Непроверенные предупреждения также подавляются при использовании этой аннотации.

<час>

5. @ФункциональныйИнтерфейс

Java 8 впервые представила этот 292 аннотация. Эта аннотация указывает, что объявление типа, в котором она используется, является функциональным интерфейсом. Функциональный интерфейс может иметь только один абстрактный метод.

Пример 5:Пример аннотации @FunctionalInterface

177

Если мы добавим еще один абстрактный метод, скажем,

184

Теперь, когда мы запустим программу, мы получим следующее предупреждение:

195

Не обязательно использовать 308 аннотация. Компилятор будет рассматривать любой интерфейс, соответствующий определению функционального интерфейса, как функциональный интерфейс.

Мы используем эту аннотацию, чтобы убедиться, что функциональный интерфейс имеет только один абстрактный метод.

Однако у него может быть любое количество стандартных и статических методов, потому что у них есть реализация.

200
<час>

Пользовательские аннотации

Также можно создавать собственные аннотации.

Его синтаксис:

217

Вот что вам нужно знать о пользовательских аннотациях:

  • Аннотации можно создавать с помощью 319. за которым следует название аннотации.
  • Аннотация может содержать элементы, которые выглядят как методы, но не имеют реализации.
  • Значение по умолчанию является необязательным. Параметры не могут иметь нулевое значение.
  • Тип возвращаемого значения метода может быть примитивным, перечислением, строкой, именем класса или массивом этих типов.

Пример 6. Пример пользовательской аннотации

227

Вывод

236
<час>

Метааннотации

Мета-аннотации – это аннотации, которые применяются к другим аннотациям.

1. @Сохранение

323 аннотация указывает уровень, до которого будет доступна аннотация.

Его синтаксис:

249

Существует 3 типа политик хранения:

  • RetentionPolicy.SOURCE - Аннотация доступна только на уровне исходного кода и игнорируется компилятором.
  • RetentionPolicy.CLASS - Эта аннотация доступна компилятору во время компиляции, но игнорируется виртуальной машиной Java (JVM).
  • RetentionPolicy.RUNTIME - Аннотация доступна для JVM.

Например,

259
<час>

2. @Документировано

По умолчанию пользовательские аннотации не включены в официальную документацию по Java. Чтобы включить нашу аннотацию в документацию Javadoc, мы используем 338 аннотация.

Например,

263
<час>

3. @Цель

Мы можем ограничить применение аннотации к определенным целям с помощью 349 аннотация.

Его синтаксис:

277

352 может иметь один из следующих типов:

Тип элемента Цель
364 Тип аннотации
378 Конструкторы
380 Поля
398 Локальные переменные
405 Методы
411 Пакет
425 Параметр
435 Любой элемент класса

Например,

282

В этом примере мы ограничили использование этой аннотации только методами.

Примечание. Если целевой тип не определен, аннотацию можно использовать для любого элемента.

<час>

4. @Унаследовано

По умолчанию тип аннотации не может быть унаследован от суперкласса. Однако, если нам нужно наследовать аннотацию от суперкласса к подклассу, мы используем 440 аннотация.

Его синтаксис:

293

Например,

302
<час>

5. @Повторяемый

Аннотация с пометкой 456 может применяться несколько раз к одному и тому же объявлению.

315

Значение, определенное в 460 annotation — это аннотация контейнера. Аннотация контейнера имеет переменную value типа массива вышеуказанной повторяемой аннотации. Здесь 477 являются содержащим тип аннотации.

325

Теперь 488 аннотацию можно использовать несколько раз в одном и том же объявлении.

338
<час>

Если нам нужно получить данные аннотаций, мы можем использовать Reflection API.

Чтобы получить значения аннотаций, мы используем 493 или 508 метод, определенный в Reflection API.


java

  1. Типы данных Java (примитивные)
  2. Операторы Java
  3. Java-интерфейс
  4. Java-проба с ресурсами
  5. Java-аннотации
  6. Типы аннотаций Java
  7. Метод Java String charAt() с примером
  8. Метод Java String endWith() с примером
  9. Java String replace(), replaceAll() и replaceFirst()
  10. Java — типы переменных