Úgy él, hogy az új jdk 7 - első rész

Néhány nappal ezelőtt véget ért a konferencia Devoxx.com. ahol Mark Reinhold hivatalosan is bejelentette - lezárások (lezárások) vannak JDK 7. Sok áramkörök nagyon fontos újítás - egyrészt meg kell jelentősen bővíteni kifejező nyelv, és hogy bizonyos fokú funkcionális programozás Java. Itt, a másik pedig, hogy nehezíti a nyelvet -, és nem minden a fejlesztők képesek lesznek teljes mértékben kihasználni ezeket a lehetőségeket.

De az áramkör egy külön téma egy másik cikket, most már az ajánlat csak az eredeti cikket bezárások JDK 7 megpróbálok írni róla később.

Sok 7-novovedeny nyelven kerültek keretében megvalósuló projekt Coin (a fordítása a cikk új nyelvi funkciók Java 7):

Kiterjesztett támogatás gyűjtemények a nyelvet:

A Java, az új szintaxist kell végrehajtani, hogy hozzon létre gyűjtemények (Ruby stílus). Most ahelyett, hogy:


List list = new ArrayList ();
list.add ( "termék");
Karakterlánc elem = list.get (0);

Szett szett = new Hash-halmaz ();
set.add ( "termék");

Map térkép = new HashMap ();
map.put ( "kulcs", 1);
int value = map.get ( "kulcs");

írhat


List list = [ "tétel"];
Karakterlánc elem = lista [0];

Ebben az esetben az adatgyűjtés lesz megváltoztathatatlan (megváltoztathatatlan).

Automatikus Resource Management

Egyes források jönnek létre, hogy a folyamat az alkalmazás kell zárni kifejezetten - általában olyan módszerrel close (). A Java 7 fogják terjeszteni alkalmassága try blokkban, így a jogot, hogy a try blokkban a szükséges forrásokat a befejezése a blokk lesz zárva korektno (a close () hívás).

Egy értelmes kérdés lenne -, és hogy a futási fogja meghatározni a szükséges erőforrások és explicit támogatásával a lezárás? A válasz egyszerű - az új felület zárható és megfelelő erőforrás osztályok jönnek létre (InputStream, írók, aljzatok, Sql klssy) bővül, hogy végre ezt a felületet. Ez a megvalósítás lesz visszafelé kompatibilis a régebbi verziók a Java.

Íme egy példa. Ki olvas egy fájlt a következőképpen:


BufferedReader br = új BufferedReader (új FileReader (path));
próbáld visszaút br.readLine ();
> Végül br.close ();
>

Java-7, a kód átírható, mint:


próbálja (BufferedReader br = új BufferedReader (új FileReader (path))) vissza br.readLine ();
>

Továbbfejlesztett számítási típusok létrehozásakor gyűjtemények

Úgy gondolom, hogy szinte az összes programozó szembe kell írni:

térkép> Anagrams = new HashMap> ();

A legtöbb esetben meg kell másolni a gyűjtemény típusát értékeket. Ezt a problémát úgy oldották meg a Google-gyűjtemény könyvtárban. és most fog tartalmazni, és maga a nyelv.

Most lehet írni:

térkép> Anagrams = new HashMap<>();

Ugyanakkor bemutatjuk az üzemeltető <> - gyémánt (ékszer), amely befogadja a típusú kapcsolat leírása.

Aláhúzza számokban

Az egyik haszontalan számomra újítások ezt a cikket:


int one_million = 1_000_000;

A hivatalos indok - növekvő olvashatóság nagy int és hosszú.

Használata húrok az üzemeltető kapcsoló

Eddig a pontig a switch kifejezés csak akkor használható számát (Number) és számlálására (enum). A Java 7 adhatunk a támogatási sorokat:


S karakterlánc =.
kapcsoló (k) esetében "quux":
processQuux (s);
// leesés

ügy "foo":
ügy "bar":
processFooOrBar (s);
break;

ügy „valami”:
processBaz (s);
// leesés

Részletek az innovációs megtalálható a javaslatban: Egyszerűsített Varargs metódushívás Idézek csak egy példa.

van most:


statikus lista asList (T. elemek)

statikus lista> StringFactories () lehívható a, b, c;
.
* // Figyelmeztetés: ** „használja ellenőrizetlenül, vagy a nem biztonságos működés” *
vissza asList (a, b, c);
>

A szándék:

* // Figyelmeztetés: ** „lehetővé teszi a biztonságos generikus tömb létrehozása” *
statikus lista asList (T. elemek)

statikus lista> StringFactories () lehívható a, b, c;
.
vissza asList (a, b, c);
>

Összesen: már leírtam csak egy kis része az új termékek, hogy elvárjuk, hogy a JDK 7 Természetesen a legfontosabb áramköri Novik lesz, de nekik a következő alkalommal. És most azt lehet mondani, hogy nagy valószínűséggel fogja használni a gyémánt üzemeltető, és valószínűleg az automatikus erőforrás-gazdálkodás. De line switch tűnik számomra gonosz, mert figyelmét, hogy a használat sztring literálok helyett enum.

Azt is szeretné megjegyezni, hogy ez csak az első hozzászólás ebben a sorozatban - biztos, hogy folytatni kell.

Kapcsolódó cikkek