„Здрасти, Амиго!“

„Здравей, Риши.“

„Днес ще ви дам по-задълбочено въведение в анотациите.“

„Както вероятно вече знаете, анотациите са специални думи, които могат да бъдат поставени до класове, полета, методи и променливи.“

"Да. Срещам ги много често."

„Понякога те се наричат ​​още метаданни . Основната им цел е да съхраняват специфична допълнителна информация за методи, полета и класове.“

— За кого го съхраняват?

— Това е много добър въпрос.

„Хората пишат анотации, което означава, че някой трябва да ги има.

„Анотациите ви позволяват да съхранявате допълнителна информация за codeа и програмните елементи, но формално те не са част от codeа.“

„Анотациите могат да се използват за генериране на XML, определяне дали даден метод е остарял, проследяване на грешки и т.н.“

„Ето пример за анотации в codeа:“

Пример
@CatInfo(manager=Catmanager.class, unique=true)
class Cat
{
 @Name("Missy")
 private String name;

 @SuppressWarnings(value = "unchecked")
 void getUniqueCatName()
 {

 }
}

„Както можете да видите, данните могат да се съхраняват в анотации.“

„Ако една анотация има само едно поле, наречено стойност , тогава името на полето може да бъде пропуснато:“

Пример
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

„Ако няма параметри в скобите, те също могат да бъдат пропуснати:“

Пример
@Override
void getUniqueCatName()
{

}

"Изключително лесно е да създадете своя собствена анотация. Декларирането на анотация е почти идентично с декларирането на интерфейс."

Пример
@interface CatManager
{
 Class manager();
 boolean unique();
 String name() default "Unknown Cat";
}

„Има само няколко разлики.“

„Първо поставяте знак «@» преди думата интерфейс

„Второ, една анотация може да има стойности по подразбиране. Използвате думата по подразбиране, за да зададете стойности по подразбиране . Вижте примера по-горе. Тези параметри не са задължителни и могат да бъдат пропуснати при добавяне на анотации.“

„Ах. Всичко е по-лесно, отколкото си мислех. И аз ги избягвах, Howто Робо-дяволът избягва светена вода. Не е много приятно, когато codeът съдържа много неща, които не разбираш напълно.“

„О, добре че ми напомни – искам да ти разкажа повече за анотациите, използвани от компилатора.“

„Има само 3 такива анотации. Е, три засега.“

@Отхвърлено.

"Можете да анотирате клас or метод с @Deprecated. Това ще накара компилатора да издаде предупреждение (предупреждението не е грешка) и IntelliJ IDEA ще покаже този метод като зачеркнат текст. Нещо подобно  :

Пример
Date date = new Date();
int year = date.getYear();

@Override.

„Смята се за най-добра практика да добавите анотацията @Override към методите, които замествате.“

"За Howво е това? IDEA не показва ли вече дали даден метод е заменен or не?"

„Първо, има IDEA и след това има синтаксис на Java.“

„И второ, хипотетично, може да имате ситуация, при която методът на базовия клас се преименува без съответната промяна в името на метода в подкласа. Програмата няма да работи според очакванията, но никой няма да забележи. Тази анотация е измислена, за да предотвратяване на тези ситуации:"

Пример
@Override
void getUniqueCatName()
{

}

@SuppressWarnings.

„Понякога компилаторът показва много предупреждения. А понякога ние знаем за „проблемите“ и умишлено избираме да използваме съответния code, който ги създава. Можете да използвате тази анотация, за да скриете някои от тези предупреждения.“

„Програмистът може да използва анотацията @SuppressWarnings , за да каже на компилатора: «Не показвайте предупреждение за тази грешка — това е умишлено.» Например:"

Пример
@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"Схванах го."

„Малко съм уморен. Ще отида да намокря пресъхналото си гърло. Да продължим след почивка, става ли?“

"Сигурен."