Trăiește în noul JDK 7 - partea I

Cu câteva zile în urmă sa încheiat conferința de Devoxx.com. în cazul în care Mark Reinhold a anunțat oficial - închideri (închideri) sunt în JDK 7. Pentru mai multe circuite au fost de inovare foarte importante - pe de o parte, au nevoie să se extindă în mod semnificativ limbajul expresiv, și să aducă un anumit grad de programare funcțional în Java. Aici, pe de altă parte, va complica limba - și nu toți dezvoltatorii vor fi în măsură să profite din plin de aceste oportunități.

Dar circuitul este un subiect separat pentru un alt articol, acum pot oferi doar închiderile articolul original din JDK 7. Eu încerc să scriu despre asta mai târziu.

Mult pentru limba 7-novovedeny care au fost puse în aplicare în cadrul proiectului monedei (o traducere a articol Noile caracteristici de limbă în Java 7):

colecții de suport extins în limba:

În Java, noua sintaxă va fi pusă în aplicare pentru a crea colecții (în stil Ruby). Acum, în loc de:


Lista List = new ArrayList ();
list.add ( "produs");
element String = list.get (0);

Set = new HashSet ();
set.add ( "produs");

Harta Harta = new HashMap ();
map.put ( "cheie", 1);
Valoarea int map.get ( "cheie") =;

puteți scrie


Lista List = [ "element"];
element String = lista [0];

În acest caz, colectarea de date va fi imuabil (imuabile).

Managementul resurselor automat

Unele dintre resursele care sunt create în procesul de aplicare trebuie să fie închise în mod explicit - de obicei, printr-o strânsă metoda (). În Java 7 va fi extins bloc try funcționalitate, care permite dreptul de a declara într-un bloc try resursele necesare pentru finalizarea blocului va fi închis korektno (folosind închidere apel ()).

O întrebare rezonabilă ar fi - și modul în care timpul de funcționare va determina resursele necesare și sprijinul explicit închiderea? Răspunsul este simplu - noua interfață și poate fi închisă prin clase de resurse corespunzătoare, vor fi create (InputStream, Scriitori, Sockets, Sql klssy) va fi extins pentru a pune în aplicare această interfață. Această implementare va fi compatibil cu versiunile mai vechi de Java.

Iată un exemplu. Cine citește dintr-un fișier, după cum urmează:


BufferedReader br = new BufferedReader (new FileReader (cale));
încercați să se întoarcă br.readLine ();
> În cele din urmă br.close ();
>

În Java 7, acest cod poate fi rescrisă ca:


încercați (BufferedReader br = new BufferedReader (new FileReader (cale))) întoarce br.readLine ();
>

Tipuri de calcul îmbunătățite când se creează colecții

Cred că aproape toți programatorii se confruntă cu nevoia de a scrie:

hartă> Anagrams = new HashMap> ();

În cele mai multe cazuri, este necesar să se dubleze tipul de valori de colectare. Această problemă a fost rezolvată în biblioteca Google colecții. iar acum va include și limba în sine.

Acum puteți scrie:

hartă> Anagrams = new HashMap<>();

În același timp, vom introduce operatorul <> - diamant (bijuterie) care primește tipul de descriere link.

Subliniere în cifre

Una dintre cele mai inutile pentru mine inovațiile din acest articol:


int one_million = 1_000_000;

Motivul oficial - creșterea lizibilitate int mare si lung.

Utilizarea siruri de caractere în comutatorul operatorului

Până în acest punct într-o declarație comutator poate fi utilizat numai numărul (număr) și enumerarea (enum). In Java 7 pot fi adăugate la liniile de suport:


= String s.
comutator (e) caz "quux":
processQuux (s);
// toamna-through

caz "foo":
caz "bar":
processFooOrBar (s);
pauză;

caz "Baz":
processBaz (s);
// toamna-through

Detaliile acestei inovații pot fi găsite în propunere: simplificată varargs Metoda Invocarea Voi cita doar un exemplu.

avem acum:


static listă asList (elemente T.)

Listă statice> StringFactories () nevărsată a, b, c;
.
* // Atenție: ** „utilizează operațiuni neverificate sau nesigure“ *
întoarce asList (a, b, c);
>

O voință:

* // Atenție: ** „permite crearea de matrice generice nesigure“ *
static listă asList (elemente T.)

Listă statice> StringFactories () nevărsată a, b, c;
.
întoarce asList (a, b, c);
>

Total: Am descris doar o mică parte a noilor produse pe care ne așteptăm să JDK 7. Desigur, cel mai important circuitul Novik va, dar pentru ei data viitoare. Și acum pot spune că cel mai probabil va folosi operatorul de diamant, și cel mai probabil gestionarea automată a resurselor. Dar, în comutator mi se par rău, pentru că de a încuraja că literali utilizarea șir în loc de enum.

De asemenea, doresc să se constate că acesta este doar primul post din această serie - este sigur pentru a fi continuată.

articole similare