JavaRush /Java блогу /Random-KY /Аннотациялар. Биринчи бөлүк, бир аз кызыксыз

Аннотациялар. Биринчи бөлүк, бир аз кызыксыз

Группада жарыяланган
Биринчи бөлүк. Мен SOURCE жана CLASS түрлөрү менен annotationлар жөнүндө кыскача жаздым. Экинчи бөлүктө адашып калбаш үчүн жана дагы бир аз "түшүнбөстүктү" башташ үчүн окуш керек =) Бул жерде, албетте, сиз билген жок дегенде бир сөз болот!
Аннотациялар.  Биринчи бөлүк, бир аз кызыксыз - 1
Мен аларды бул жердеги көйгөйлөрдү биринчи жолу көргөндө, эмнегедир аларды байкаган жокмун. Ооба, Override orнип турат, аны IDEA жазган, ошондуктан ушундай болушу керек. Убакыттын өтүшү менен баары бир топ тереңде экенин түшүндүм. Окуп жатканыңызда annotationлар пайдасыз, бирок керектүү нерседей сезилет. Эмнеге ушундай кылып жатышканын билбейсиң. Мен бир-эки макаланы окуп чыктым окшойт, алар "кандай сонун, азыр бизде annotationлар бар, баары жөнөкөй болуп калды" дешти. Бирок мурда кандай экенин билчү эмесмин, азыр жеңorрээк экенин түшүнгөн жокмун. Эми мен билем жана сага бир аз айткым келет. Аннотациялардын 3 түрү бар (RetentionPolicy):
  • SOURCE – компилятордун annotationлары
  • КЛАСС – annotationдагы маалыматтар bytecodeго жазылат, бирок операция учурунда жеткorктүү болбойт. Алар стандарттык китепканадагы көптөгөн annotationлар бул түрүн колдонушат деп жазышат жана азыр артка шайкеш келгендиктен аны сактап калышат. Өтө өзгөчө тапшырмалар үчүн колдонулат.
  • StackOverflow боюнча суроо-жооп
  • RUNTIME – эң популярдуу, code иштеп жатканда колдонулат.
Макаланын бир бөлүгү кириш сөз менен алынгандыктан, мен бул жерде БУЛАК жана КЛАСС annotationлары жөнүндө жазам. Бул жерде мен таба алган рефераттар (3607 маселеге рахмат). Мен иштөө убактысы жөнүндө жазбайм, алардын саны өтө көп жана бул макаланын темасы эмес. БУЛАК:
  • java/lang/annotation/Native.class;
  • java/lang/SuppressWarnings.class
  • javax/annotation/Generated.class
  • ,java/lang/Override.class
КЛАСС: Эмне үчүн CLASS түрүндөгү annotationлар керек экенин билбейм. Учурдагы annotationлар үчүн documentтерди таба алган жокмун, андыктан бул жүктү артка калтырсак болот деп ойлойм. Бирок эгер тапсаңыз, бөлүшүңүз. SOURCE annotationлары:
  1. Native – бул annotationнын астындагы өзгөрмө эне codeго кайрылышы мүмкүн;

  2. SuppressWarnings – компилятордун ар кандай эскертүүлөрүн басат;

  3. Түзүлгөн – түзүлгөн баштапкы codeду белгилейт;

  4. Override – ыкманын жокко чыгарылышын текшерет.
Кененирээк маалымат:
Аннотациялар.  Биринчи бөлүк, бир аз кызыксыз - 2
Native - эч качан көргөн эмес жана колдонулган эмес. Менимче, бул өтө сейрек annotation, анткени... алар башка "эне" тилде codeду иштетүү керек болсо, аны колдонушат. Мен ага так шилтеме табууга аракет кылдым, бирок таба албадым.
Аннотациялар.  Биринчи бөлүк, бир аз кызыксыз - 3
SuppressWarnings - көбүнчө @SuppressWarnings("белгисиз") түрүндө колдонулат. Сиз билген эскертүүлөрдү басуу үчүн колдонулат. Жогорудагы мисал текшерилбеген түрлөрдү чыгаруу жөнүндө эскертүүлөрдү жокко чыгарат. Дагы, мен аны ушул формада жана колдонууда гана жолуктурдум.
Аннотациялар.  Биринчи бөлүк, бир аз кызыксыз - 4
Түзүлгөн - тапшырма xsd файлдарынан класстарды түзүүнү талап кылганда, мен аны азыр көрдүм. Бул 3 annotation так жана азыр сизди кызыктырbyte. Мен акыркысын сүрөттөп берем.
Аннотациялар.  Биринчи бөлүк, бир аз кызыксыз - 5
Override - сиз аны ар дайым колдоносуз жана ал абдан пайдалуу нерсе кылат. Методду жокко чыгарууда ката кетирүү оңой, эгерде IDEA аны жасабаса. Жазылган каталар же жөн эле каталар бар. Бул annotation ата-эне классындагы ыкма биздин (белгиленген) методубузга окшош экенине кепилдик берет. Бул ыкманын жокко чыгарылып, кошулбай тургандыгына кепилдик берет. Кодду рефакторингде методду алып салууга же өзгөртүүгө болот. Дагы, annotation сизге катаны көрсөтөт. Ансыз биздин ыкма жөн эле бүтүп калмак.
Аннотациялар.  Биринчи бөлүк, бир аз кызыксыз - 6
Кызыксызбы? Ооба деп айтаар элем, бул макаладан көп деле пайдалуу нерсе жок. Андагы дээрлик бардыгы (90%) сиз колдонбогон же колдоно турган нерсе жөнүндө, бирок өтө сейрек. Калган 10% салам жана бир караганда пайдасыз болгон Override annotationсынын сыпаттамасы. Ооба, макаланын экинчи бөлүгү кызыктуураак болот деп ойлойм. RUNTIME annotationлары болот жана алар реалдуу убакыт режиминде code менен иштешет жана кара сыйкырды жаратышат. Аннотациялар. Экинчи бөлүм. Ломбок.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION