„Здрасти, Амиго!“
„Здравей, Риши.“
„Днес ще ви дам по-задълбочено въведение в анотациите.“
„Както вероятно вече знаете, анотациите са специални думи, които могат да бъдат поставени до класове, полета, методи и променливи.“
"Да. Срещам ги много често."
„Понякога те се наричат още метаданни . Основната им цел е да съхраняват специфична допълнителна информация за методи, полета и класове.“
— За кого го съхраняват?
— Това е много добър въпрос.
„Хората пишат анотации, което означава, че някой трябва да ги има.
„Анотациите ви позволяват да съхранявате допълнителна информация за 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()
{
}
"Схванах го."
„Малко съм уморен. Ще отида да намокря пресъхналото си гърло. Да продължим след почивка, става ли?“
"Сигурен."
GO TO FULL VERSION