Új java 8

Az első lépések.

Alapértelmezett módszerek interfészek.

Az interfész most már lehetséges, hogy meghatározza a statikus módszerek. Az a tény, hogy akár 8 egy bizonyos Java felület, például, Munkavállaló, alkalmazott van egy osztály, amely a statikus módszerek generációs Employee objektumok és dolgozni velük. Könnyű újítás, hogy ugyanezek a módszerek lesz a felület, hanem a munkavállalók osztály fejlesztő lesz elfelejteni.

Példaként, nézd naturalOrder módszert adunk java.util.Comparator

Az interfészek nyilvánítja az alapértelmezett mód. Vessen egy pillantást a foreach a java.lang.Iterable: alapértelmezett módszer - a módszer az interfész megvalósított logika, ami nem feltétlenül kell meghatározni a végrehajtás ezen a felületen.

A korábbi verziók a JDK adni módszerek a standard könyvtár felület nem lehetséges, akkor megsemmisíti a teljes felhasználói kódot, mivel minden felület végrehajtására volna hozzáfűzni hiányzó végrehajtása az új módszer. 8. A Java szabványos interfészek terjeszteni számos alapértelmezett mód.

Érdemes megjegyezni, hogy miért az interfészek nem hajtják végre az alapértelmezett kivonat, azonos legyen, és toString. Az a tény, hogy a tárgyak az interfészt megvalósító, örökösei Object, amely már azonosította ezeket a módszereket az alapértelmezett. Ez lesz világos, mely az alapértelmezett módszer az úgynevezett - az egyik, hogy határozza meg a felületen, vagy az egyik a szülő osztályban.

Funkcionális interfész.

Funkcionális interfész - ez az a felület, amely meghatározza, csak egy absztrakt módszer, például, java.lang.Runnable:

Hogy pontosan meghatározzuk a felületen, mint a funkcionális annotáció hozzá @FunctionalInterface, elvén működő az @Override. Ez jelzi majd a tervet, és nem azonosítja a második absztrakt módszer a felület.

Elképzelhető, hogy az interfész tartalmazhat bármennyi alapértelmezett módszerek és továbbra is működőképes, mert az alapértelmezett módszerek - nem elvont.

lambda kifejezések

A legjelentősebb innováció Java 8 - egy lambda kifejezés. Ha azt mondod, általában, hogy meg lehet érteni őket, mint a névtelen módszereket is, amelyek így is, amely egy objektum lehet rendelni változók és mint argumentum, hogy más módszerekkel. például:

Itt, hála egy ilyen lambda kifejezés, akkor jelentősen csökkenti kódot. Hogy nézne ki anélkül, lambda: Az új verzió is bevezetett egy speciális szintaxist utalás történik a módszerek, amelyek lényegében - egy rövidített formáját néhány lambda kifejezéseket:

String :: valueOf x -> String.valueOf (x)

Object :: toString x -> x.toString ()

x :: toString () -> x.toString ()

ArrayList :: új () -> új ArrayList<>()

java.util.function

Egy másik újítás JDK - egy sor funkcionális felületeket, amelyek nagyon hasznos lesz. Vegyünk néhány közülük:

függvény - felület, amelyen keresztül megvalósul a funkciót kapott, hogy adja meg a példány T és visszaadja a kimenet példánya a R. Akkor nem túl részletesen.

állítmány - belépni - T, olyan eredményt ad vissza logikai típusú.

fogyasztó - belépni - T, termel egy akció, és visszatér semmit.

szállító - Semmi sem úgy bemenet visszatér T

BinaryOperator - megadása - két példányban a T, hogy ezután egyetlen T

A csomag is fel van szerelve primitív megvalósításai interfészek adattípusok int, hosszú és dupla.

java.util.stream

java.util.stream bevezetve, hogy a párhuzamosság szálak. Most patakok vannak osztva soros és párhuzamos. A legnagyobb előnye ennek - a gyűjtemények:

Patak van ellátva rugalmas API adatok átalakítása és üzemeltetése őket. Így mi, például, hogy gyorsan megtalálja a teljes súlya egyenként piros és kék blokkok a gyűjtemény: Mi történik a kódot:

1) A gyűjtemény blokkok jutunk patak

2) szűrő módszer visszaadja egy patak, amely már tartalmazza az elemeket csak egy színt. Ez egy közbenső (intermedier) módszer patak osztályban.

3) mapToInt eljárás kerül meghívásra a stream'a amely pontban kapott 2), és visszatér a patak, amely nem tartalmaz, maguk az elemek, és azok tulajdonságait tömege (vagyis a tömeg)

4) összege a módszert nevezik a stream'a 3. bekezdés), összefoglalja az egész súly és visszatér egy egyszerű int. Ez az utolsó (terminál) módszerrel, egyetlen eredményként.

Általában a stílus nagyon hasonlít ahhoz, amit a funkcionális programozás, ami jó, mert az egyszerűsített megoldás széles körű közös feladatokat.

Patak lehet párhuzamosított, majd a műveletek elvégzésére őket növekedni fog, mert a terhelés eloszlik az összes processzormag. Csináljunk egy párhuzamos száma az elemek:

Az egyetlen különbség az, hogy most a módszert nevezik parallelStream, és minden következő ideiglenes eljárás visszatér párhuzamos patak. Így az egész elosztott számítási egység minden processzor mag.

Tedd soros adatfolyam vissza lehet kiváltó szekvenciális () metódust. Ez akkor hasznos, ha például ki kell választania az elemek színe párhuzamos, és a számítás az összeget a tömeg - serial:

Ha ismeri a Joda Time majd tanulni egy új API nagyon könnyű lesz. Szinte mindent java.time megváltoztathatatlan. Ellentétben a régi API dátum / idő értékeket, mint a hónap és a hét napjainak keresztül valósulnak enum.

Alapvető osztályok java.time:

* LocalDateTime, LOCALDATE, Localtime - Dátum és idő. Úgy tartják, hogy egy nanoszekundum, így Localtime tárolhatók, például az érték „13: 45.30.123456789”. Sok kényelmes módszerekkel, például plusMinutes, plusHours, isAfter, toSecondOfDay stb

* Év, hónap, évHónap, napra: MONTHDAY, hétNapja - típusok kapcsolódó dátumok, minél több tartományban. Tehát éve érték között lehet „-999.999.999” a „999999999”

* Időtartam, harmad - hasznos, ha azt szeretné, hogy kifejezze az adatokat a „3 év, 2 hónap és 18 nap” vagy „3 óra 45 perc és 8 másodperc”

Ebben az innováció Java 8 nem ért véget, és megtanultuk a leginkább várt az új verzió a JDK. Minden szabványos gyűjtemény bővült számos kényelmi módszereket és képesek voltak párhuzamosság őket java.util.stream. Együtt java.util.function Java kifejezéseket kapott funkcionális programozás. Lambda kifejezések, természetesen csökkenti az összeg a kódot, hogy a fejlesztők kell írni, és egy új API dolgozó dátum és az idő elérkezett, hogy cserélje ki a régi rend elavult.

admin liberal4ik AlexVovolka maxiflash annagrin007 PROTEINE alexanzer vanya88 Anastassia d3m0n1c nick_kryloff Andrey_G Cr0s dydus0x14 AngryCellophane AndrewRogovets t1oo1 san Basuliic dmytro_p Victor_MM Diesel31ks MrNikita alekseysamoylov swyd ortodox nv_yunko

Kapcsolódó cikkek