Част 1. Написах много накратко за анотациите от типа SOURCE и CLASS. Това си струва да прочетете, за да не се изгубите във втората част и да разширите малко "недоразумението" си =) Обещавам, че определено ще има поне една дума, която знаете! Първият път, когато видях анотации в задачите тук няHow си не им обърнах особено внимание. Тук и там има @Override, но IDEA добавя това, така че реших, че трябва да бъде така. С времето разбрах, че всичко е много по-дълбоко. Докато изучавате, анотациите може да изглеждат донякъде безполезни, но необходими. Не знаете защо съществуват or Howво правят. Прочетохте няколко статии, в които се казваше: „Толкова е страхотно, че вече имаме анотации, всичко стана толкова просто“. Но не знаех How стоят нещата преди и не разбирах, че сега нещата са по-лесни. Сега знам и искам да споделя малко. Има 3 типа анотации (RetentionPolicy):
Роден — никога не съм виждал това и никога не съм го използвал. Мисля, че това е доста рядка анотация, защото се използва, когато трябва да изпълните code на друг "роден" език. Опитах се и не успях да намеря ясно споменаване за това.
SuppressWarnings — тази анотация често се използва по следния начин: @SuppressWarnings("без отметка"). Използва се за потискане на предупреждения, за които вече сте запознати. Предишният пример потиска предупрежденията за непроверени преобразувания на типове. Отново, това е единствената употреба, която съм срещал.
Генерирано — в момента попадам на тази анотация поради задание, при което трябва да генерирам класове от XSD файлове. Тези 3 анотации са доста специфични и най-вероятно в момента не са ви интересни. Ще опиша последното.
Override - Използвате го постоянно и той прави нещо много полезно. Когато замените метод, е лесно да направите грешка без помощта на IDEA. Независимо дали става дума за правописни or прости грешки, грешките се случват. Тази анотация ще гарантира, че методът в родителския клас съответства на нашия (анотиран) метод. Това гарантира, че методът ще бъде заменен, а не добавен. При рефакторинг на code родителският метод може да бъде премахнат or променен. Отново, тази анотация ще покаже грешка. Без него нашият метод просто ще бъде добавен. Скучно е? Бих казал да. Няма много полезни неща за извличане от тази статия. Почти всичко (90%) тук описва нещо, което никога няма да използвате or много рядко. Останалите 10% поздравяват и описват анотацията @Override, която на пръв поглед е безполезна. Въпреки това, мисля, че във втората част на статията ще бъде по-интересно. Там ще бъдат обсъдени анотациите за RUNTIME — те взаимодействат с codeа по време на изпълнение и правят черна магия. анотации. Част 2. Ломбок
- ИЗТОЧНИК — Анотации за компилатора
- КЛАС — Информацията от анотацията ще бъде записана в byte code, но няма да бъде налична по време на изпълнение. Казват, че стандартната библиотека има много анотации от този тип, които сега се запазват за обратна съвместимост. Това се използва за много специфични задачи.
- Въпроси и отговори в StackOverflow
- RUNTIME — Тези анотации са най-популярни. Те се използват, докато codeът се изпълнява.
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/анотация/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- Native — Променлива с тази анотация може да се отнася за собствен code;
- SuppressWarnings — Тази анотация потиска различни предупреждения на компилатора;
- Генерирано — Тази анотация маркира изходния code, който е генериран;
- Замяна — Тази анотация проверява заменките на метода.