Java 9 Voliteľné doplnky API

1. Prehľad

V tomto článku sa pozrieme na doplnky Java 9 k Voliteľné API.

Okrem modularity Java 9 tiež pridáva tri veľmi užitočné metódy pre Voliteľné trieda.

2. The alebo () Metóda

Niekedy, keď náš Voliteľné je prázdne, chceme vykonať nejakú ďalšiu akciu, ktorá vráti aj O.ptional.

Pred Java 9 Voliteľné trieda mala iba alebo iný() a orElseGet () metódy, ale obe musia vrátiť nezabalené hodnoty.

Java 9 predstavuje alebo () metóda, ktorá vráti inú Voliteľné lenivo ako náš Voliteľné je prázdny. Ak náš prvý Voliteľné má definovanú hodnotu, lambda odovzdaná do alebo () metóda nebude vyvolaná a hodnota nebude vypočítaná a vrátená:

@Test public void givenOptional_whenPresent_thenShouldTakeAValueFromIt () {// daný reťazec očakávaný = "properValue"; Voliteľná hodnota = Optional.of (expect); Voliteľné defaultValue = Optional.of ("predvolené"); // keď Voliteľný výsledok = hodnota.or (() -> defaultValue); // potom assertThat (result.get ()). isEqualTo (očakáva sa); }

V prípade Voliteľné being prázdny, vrátený výsledok bude rovnaký ako predvolená hodnota:

@Test public void givenOptional_whenEmpty_thenShouldTakeAValueFromOr () {// daný reťazec defaultString = "default"; Voliteľná hodnota = Optional.empty (); Voliteľné defaultValue = Optional.of (defaultString); // keď Voliteľný výsledok = hodnota.or (() -> defaultValue); // potom assertThat (result.get ()). isEqualTo (defaultString); }

3. The ifPresentOrElse () Metóda

Keď máme Voliteľné Napríklad často chceme vykonať konkrétnu akciu na jej základnej hodnote. Na druhej strane, ak Voliteľné je prázdny chceme to prihlásiť alebo sledovať túto skutočnosť zvýšením nejakej metriky.

The ifPresentOrElse () metóda je vytvorená presne pre tieto scenáre. Môžeme prejsť a Spotrebiteľ na ktoré sa bude odvolávať, ak Voliteľné je definované a Spustiteľné ktoré sa vykonajú, ak Voliteľné je prázdny.

Povedzme, že máme definované Voliteľné a chceme zvýšiť konkrétne počítadlo, ak je hodnota prítomná:

@Test public void givenOptional_whenPresent_thenShouldExecuteProperCallback () {// dané Voliteľná hodnota = Optional.of ("properValue"); AtomicInteger successCounter = nový AtomicInteger (0); AtomicInteger onEmptyOptionalCounter = nový AtomicInteger (0); // keď value.ifPresentOrElse (v -> successCounter.incrementAndGet (), onEmptyOptionalCounter :: incrementAndGet); // potom assertThat (successCounter.get ()). isEqualTo (1); assertThat (onEmptyOptionalCounter.get ()). isEqualTo (0); }

Upozorňujeme, že spätné volanie, ktoré bolo odoslané ako druhý argument, nebolo vykonané.

V prípade prázdneho Voliteľné, vykoná sa druhé spätné volanie:

@Test public void givenOptional_whenNotPresent_thenShouldExecuteProperCallback () {// dané Voliteľná hodnota = Optional.empty (); AtomicInteger successCounter = nový AtomicInteger (0); AtomicInteger onEmptyOptionalCounter = nový AtomicInteger (0); // keď value.ifPresentOrElse (v -> successCounter.incrementAndGet (), onEmptyOptionalCounter :: incrementAndGet); // potom assertThat (successCounter.get ()). isEqualTo (0); assertThat (onEmptyOptionalCounter.get ()). isEqualTo (1); }

4. The Prúd() Metóda

Posledná metóda, ktorá sa pridáva k Voliteľné triedy v Java 9, je Prúd() metóda.

Java je veľmi plynulý a elegantný Prúd API, ktoré dokáže pracovať so zbierkami a využíva mnoho konceptov funkčného programovania. Najnovšia verzia Java predstavuje Prúd() metóda na Voliteľné trieda že nám umožňuje liečiť Voliteľné inštancia ako a Prúd.

Povedzme, že máme definované Voliteľné a voláme Prúd() metóda na to. Týmto sa vytvorí Prúd jedného prvku, na ktorom môžeme použiť všetky metódy dostupné v Prúd API:

@Test public void givenOptionalOfSome_whenToStream_thenShouldTreatItAsOneElementStream () {// uvedený Voliteľná hodnota = Optional.of ("a"); // keď List collect = value.stream (). map (String :: toUpperCase) .collect (Collectors.toList ()); // potom assertThat (collect) .hasSameElementsAs (List.of ("A")); }

Na druhej strane, ak Voliteľné nie je prítomný, volá na Prúd() metóda na ňom vytvorí prázdny Prúd:

@Test public void givenOptionalOfNone_whenToStream_thenShouldTreatItAsZeroElementStream () {// dané Voliteľná hodnota = Optional.empty (); // keď List collect = value.stream () .map (String :: toUpperCase) .collect (Collectors.toList ()); // potom assertThat (collect) .isEmpty (); }

Teraz môžeme rýchlo filtrovať Prúdy z Voliteľné.

Pracuje na prázdno Prúd nebude mať žiadny efekt, ale vďaka Prúd() metóda, ktorú teraz môžeme reťaziť Voliteľné API s Prúd API. To nám umožňuje vytvárať elegantnejšie a plynulejšie kódy.

5. Záver

V tomto rýchlom článku sme sa pozreli na Java 9 Voliteľné Dodatky API.

Videli sme, ako používať alebo () metóda vrátiť voliteľné v prípade, že zdroj Voliteľné je prázdny. Použili sme ifPresentOrElse () vykonať Spotrebiteľ ak je hodnota k dispozícii a inak, spustite ďalšie spätné volanie.

Nakoniec sme videli, ako reťaziť Voliteľné s Prúd API pomocou Prúd() metóda.

Implementáciu všetkých týchto príkladov a útržkov kódu nájdete v projekte GitHub - jedná sa o projekt Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.