JavaRush /Java блог /Random UA /Анотації. Частина перша, трохи нудна

Анотації. Частина перша, трохи нудна

Стаття з групи Random UA
Перша частина. Дуже коротко написав про інструкції з типом SOURCE і CLASS. Варто прочитати, щоб не загубитися в другій частині і щоб почати "не розуміти" трохи більше =) Тут точно буде мінімум одне слово, яке ви знаєте!
Анотації.  Частина перша, трохи нудна.
Вперше я їх бачив у завданнях тут і якось не помічав. Ну, бовтається Override, її ж IDEA написала, отже, так треба. Згодом я зрозумів, що все набагато глибше. Поки вчишся, інструкції здаються чимось марним, але необхідним. Ти не знаєш, навіщо вони що роблять. Начебто прочитав пару статей, там розповіли «як чудово, що тепер у нас є анотації, все стало так просто». Але я не знав, як було раніше, і не розумів, що стало простіше. Тепер знаю та хочу розповісти небагато. Є 3 типи анотацій (RetentionPolicy):
  • SOURCE – інструкції для компілятора
  • CLASS – дані з анотації будуть записані в байткод, але недоступні під час роботи. Пишуть, що в стандартній бібліотеці багато анотацій використовують цей вид і зараз його тримають через зворотну сумісність. Застосовується для дуже специфічних завдань.
  • Питання та відповідь на StackOverflow
  • RUNTIME – найпопулярніші, що використовуються під час роботи коду.
Оскільки частина статті зайняла вступ, то я напишу тут про SOURCE та CLASS анотації. Ось які інструкція я зміг визначити (спасибі завдання 3607). Runtime я не пишу, їх надто багато і не тема статті. SOURCE:
  • java/lang/annotation/Native.class;
  • java/lang/SuppressWarnings.class
  • javax/annotation/Generated.class
  • ,java/lang/Override.class
CLASS: Я не знаю, навіщо потрібні інструкції з типом CLASS. Документацію на існуючі інструкції знайти не вдалося, тому думаю можна просто залишити цей багаж позаду. Але якщо знайдете, поділіться. SOURCE анотації:
  1. Native – змінна під цією інструкцією може посилатися на новий код;

  2. SuppressWarnings – пригнічує різні попередження компілятора;

  3. Generated – маркує вихідний код, який був згенерований;

  4. Override – перевіряє перевизначення методу.
Детальніше:
Анотації.  Частина перша, трохи нудна.
Native ніколи не бачив і ніколи не користувався. Думаю досить рідкісна інструкція, т.к. користуються їй, якщо треба запустити код іншою «нативною» мовою. Я спробував знайти зрозумілу згадку про неї, але не вийшло.
Анотації.  Частина перша, трохи нудна - 3
SuppressWarnings — часто використовується як @SuppressWarnings("unchecked"). Використовується, щоб придушувати попередження, про які ви знаєте. Приклад вище пригнічує попередження про наведення неперевірених типів. Знову ж таки я зустрічав тільки в такому вигляді, використанні.
Анотації.  Частина перша, трохи нудна.
Generated - зіткнувся зараз, коли за завданням доводиться генерувати класи із xsd файлів. Ці три інструкції досить специфічні і зараз вам, швидше за все, нецікаві. Опишу останню.
Анотації.  Частина перша, трохи нудна.
Override - їй ви користуєтеся постійно і вона робить дуже корисну річ. При перевизначенні методу легко помаботися, якщо це не робить IDEA. Очеп'ятки або просто помилки, буває. Ця інструкція спостерігатиме, що метод у батьківському класі збігається з нашим (позначеним) методом. Це гарантує нам, що метод буде перевизначено, а не дописано. При рефакторинг коду, метод може бути видалений або змінений. Знову ж таки анотація вам вкаже на помилку. Без неї наш метод просто дописався б.
Анотації.  Частина перша, трохи нудна.
Нудно? Я сказав би так, з цієї статті мало що корисного можна винести. Майже все в ній (90%) розповідь про щось, чим ви не користуватиметеся, або будете, але дуже рідко. 10%, що залишабося, це привіт і опис анотації Override, яка на перший погляд марна. Ну, що ж гадаю, у другій частині статті буде цікавіше. Там буду RUNTIME анотації, а вони взаємодіють із кодом у реальному часі та творять чорну магію. Анотації. Частина друга. Ломбок.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ