Java 9 Opcionális API-kiegészítések

1. Áttekintés

Ebben a cikkben megvizsgáljuk a Java 9 kiegészítéseit a Választható API.

A modularitáson túl a Java 9 három nagyon hasznos módszert is hozzáad a Választható osztály.

2. A vagy() Módszer

Néha, amikor a mi Választható üres, valamilyen más műveletet szeretnénk végrehajtani, amely szintén O-t ad visszaptional.

Korábbi Java 9 a Választható osztályban csak a különben() és vagyElseGet () módszereket, de mindkettőnek vissza kell adnia a kibontott értékeket.

A Java 9 bemutatja a vagy() metódus, amely másikat ad vissza Választható lustán, ha a mi Választható üres. Ha az első Választható meghatározott értéke van, a lambda átadta a vagy() metódust nem hívják meg, és az értéket nem számolják ki és nem adják vissza:

@Test public void givenOptional_whenPresent_thenShouldTakeAValueFromIt () {// adott karakterlánc várható = "megfelelő érték"; Opcionális érték = Opcionális (várható); Opcionális defaultValue = Opcionális.of ("alapértelmezett"); // amikor Opcionális eredmény = érték.vagy (() -> alapértelmezett érték); // majd assertThat (result.get ()). isEqualTo (várható); }

Abban az esetben Választható being üres, a visszatért eredmény azonos lesz a alapértelmezett érték:

@Test public void givenOptional_whenEmpty_thenShouldTakeAValueFromOr () {// megadott String defaultString = "alapértelmezett"; Opcionális érték = Opcionális.empty (); Opcionális defaultValue = Opcionális.of (defaultString); // amikor Opcionális eredmény = érték.vagy (() -> alapértelmezett érték); // majd assertThat (result.get ()). isEqualTo (defaultString); }

3. Az ifPresentOrElse () Módszer

Amikor van egy Választható például gyakran egy konkrét műveletet akarunk végrehajtani annak mögöttes értékén. Másrészt, ha a Választható van üres naplózni akarjuk, vagy nyomon akarjuk követni ezt a tényt valamilyen mutató növelésével.

A ifPresentOrElse () módszer pontosan ilyen forgatókönyvekhez készül. Áthaladhatunk a Fogyasztó arra hivatkoznak, ha a Választható meg van határozva, és Futható hogy akkor hajtják végre, ha a Választható üres.

Tegyük fel, hogy van egy meghatározott Választható és szeretnénk növelni egy adott számlálót, ha az érték jelen van:

@Test public void givenOptional_whenPresent_thenShouldExecuteProperCallback () {// megadott Opcionális érték = Opcionális.of ("ProperValue"); AtomicInteger successCounter = új AtomicInteger (0); AtomicInteger onEmptyOptionalCounter = új AtomicInteger (0); // amikor value.ifPresentOrElse (v -> successCounter.incrementAndGet (), onEmptyOptionalCounter :: incrementAndGet); // majd assertThat (successCounter.get ()). isEqualTo (1); assertThat (onEmptyOptionalCounter.get ()). isEqualTo (0); }

Ne feledje, hogy a második argumentumként átadott visszahívás nem lett végrehajtva.

Üres esetén Választható, a második visszahívás végrehajtásra kerül:

@Test public void givenOptional_whenNotPresent_thenShouldExecuteProperCallback () {// megadott Opcionális érték = Optional.empty (); AtomicInteger successCounter = új AtomicInteger (0); AtomicInteger onEmptyOptionalCounter = új AtomicInteger (0); // amikor value.ifPresentOrElse (v -> successCounter.incrementAndGet (), onEmptyOptionalCounter :: incrementAndGet); // majd assertThat (successCounter.get ()). isEqualTo (0); assertThat (onEmptyOptionalCounter.get ()). isEqualTo (1); }

4. A folyam() Módszer

Az utolsó módszer, amely hozzáadódik a Választható osztály a Java 9-ben, az a folyam() módszer.

A Java nagyon folyékony és elegáns Folyam API, amely képes működni a gyűjteményeken és sok funkcionális programozási koncepciót felhasznál. A legújabb Java verzió bemutatja a folyam() módszer a Választható osztály, hogy lehetővé teszi számunkra a Választható például mint a Folyam.

Tegyük fel, hogy van egy meghatározott Választható és hívjuk a folyam() módszer rajta. Ez létrehozza a Folyam egy elem, amelyen az összes elérhető módszert felhasználhatjuk Folyam API:

@Test public void givenOptionalOfSome_whenToStream_thenShouldTreatItAsOneElementStream () {// megadott Opcionális érték = Opcionális. ("A"); // amikor a List gyűjt = érték.folyam (). térkép (String :: toUpperCase). gyűjt (Collectors.toList ()); // majd assertThat (gyűjt) .hasSameElementsAs (List.of ("A")); }

Másrészt, ha Választható nincs jelen, hívja a folyam() metódus létrehoz egy üreset Folyam:

@Test public void givenOptionalOfNone_whenToStream_thenShouldTreatItAsZeroElementStream () {// megadott Opcionális érték = Opcionális.empty (); // amikor a List collect = value.stream () .map (String :: toUpperCase) .collect (Collectors.toList ()); // majd állítsaThat (gyűjt) .isEmpty (); }

Most gyorsan szűrhetünk Patakok nak,-nek Opcionális.

Üresen működik Folyam nem lesz semmilyen hatása, de hála a folyam() módszerrel most láncolhatjuk a Választható API az Folyam API. Ez lehetővé teszi számunkra, hogy elegánsabb és gördülékenyebb kódot hozzunk létre.

5. Következtetés

Ebben a gyors cikkben a Java 9-et néztük meg Választható API-kiegészítések.

Láttuk, hogyan kell használni a vagy() metódus egy Opcionális visszaadására abban az esetben, ha a forrás Választható üres. Használtuk a ifPresentOrElse () végrehajtani a Fogyasztó ha az érték jelen van, és másként, futtasson egy másik visszahívást.

Végül láttuk, hogyan kell láncolni a Választható a ... val Folyam API a folyam() módszer.

Ezeknek a példáknak és kódrészleteknek a megvalósítása megtalálható a GitHub projektben - ez egy Maven projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.