Acest articol este dedicat unei noi dezvoltări a societății solare - jdk 5

Deci, ce caracteristici pot fi numite revoluționare:

1. Generic - această traducere poate fi dificil de tradus într-un singur cuvânt. Este posibil să se dea aproximativ o astfel de interpretare: "caracteristicile generalizate ale întregii clase".

Pe scurt, se pare că: înainte, tot ceea ce programatorul a introdus în clasele Colecție (Vector, List, Stack) era de tip Object. Dacă ați primit un element din Colecție (de exemplu, de tip String), atunci a trebuit să faceți acest lucru:

String str = (String) v.get (0);

pentru (Iterator i = c.iterator (); i.hasNext ();)

Observați că există două puncte. În primul rând, trebuie să aduceți tipul de element din colecție în vizualizarea dorită. Și, în al doilea rând, trebuie să fiți sigur că este într-adevăr String. NU garantează că nu va exista exact șir, nu vi s-au dat. În orice moment, orice alt tip de date ar putea fi introduse în colecție. Și, în consecință, totul a fost o chestiune de încredere fie - nu este altceva decât String, sau era necesar să se asigure că tipul este String.

Acum puteți avea o asemenea încredere - puteți specifica la etapa de compilare ce tip doriți să stocați în colecție. Și deja în stadiul de compilare vi se va spune că faceți ceva greșit.

pentru (Iterator i = c.iterator (); i.hasNext (); )

Pentru a face ceva mai concret, vom scrie un exemplu cu drepturi depline.

Să rezolvăm încet programul nostru. Prima neponyatka este un șir care începe cu @Retention (.

Dezvoltatorii JDK 5.0 au propus următoarea metodă de introducere a metadatelor:

Programatorul descrie structura acelor metadate pe care le va folosi. Am intrat într-o structură care conține un singur câmp - comentariu

Înregistrările complete de date meta arată astfel:

După introducerea metadatelor, programatorul poate folosi aceste metadate unde este interesat. Este clar că astfel de structuri nu vor fi una, ci multe. Am luat unul de exemplu. Ori de câte ori apare @debug (cu excepția descrierii), vedem că perechea "parameter = value" este indicată în paranteze.

Apoi, totul este foarte simplu - am folosit această structură pentru a stoca informații pentru clasa însăși, parametrul și metoda.

În metoda principală, am fost rugați, la rândul său, să returnez adnotările din clasa însăși, apoi metoda și câmpul. Dacă jucați un pic cu acest program, veți înțelege destul de mult.