Späť na blog
Tipy a triky

8 najlepších pluginov pre After Effects

Skillmea tím
07.03.2022
9 minút čítania
8 najlepších pluginov pre After Effects

V tomto článku prinášame prehľad 8 najlepších After Effects pluginov a ich funkcií, o ktorých by mal vedieť a pracovať s nimi každý seriózny motion designer.

Adobe After Effects je skvelý softvér, no prichádza bod, kedy by vás mohlo zaujímať, ako môžete zlepšiť svoj workflow, zvýšiť svoju kreativitu a produktivitu a naučiť sa nové zručnosti. V tomto momente vstupujú do hry úžasné pluginy do After Effects. Pluginy existujú od výmyslu sveta: od úpravy postáv, korekcie farieb, glitch efekty, a mnohé ďalšie.

Výhody a nevýhody používania After Effects pluginov

Ešte predtým ako sa pozrieme na jednotlivé pluginy podrobnejšie, prejdime si klady a zápory After Effects pluginov, 

Výhody After Effects pluginov:

  • umožňujú novú úroveň kreativity,
  • mali by zlepšiť váš pracovný workflow v After Effects,
  • vytvárajte efekty oveľa rýchlejšie ako používaním iba predvolených efektov After Effects,
  • možňuje vám pracovať s 3D objektmi a prvkami priamo v After Effects,
  • vytvorte nádherné pozadia iba niekoľkými kliknutiami,
  • nevyžadujú znalosť programovania, skriptovania.

Nevýhody After Effects pluginov:

  • niektoré pluginy zaberajú veľa pamäte a značne spomaľujú After Effects počas ich používania,
  • vykreslenie niektorých pluginov zaberie veľa času,
  • niektoré pluginy môžu počas používania aplikácie After Effects spadnúť,
  • cena pluginov môže byť relatívne vysoká.

1. Orb

Plugin Orb je navrhnutý tak, aby pomáhal pri vytváraní 3-rozmerných gúľ. Používa sa predovšetkým pri vytváraní planét. Orb používa podobný 3D engine ako vynikajúci doplnok Element 3D od Video Copilot a zameriava sa na vytváranie realistických planét a ponúka celý rad jedinečných nástrojov na jednoduché vytváranie planét.

Môže sa zdať, že vytvorenie planéty v After Effects je také jednoduché ako vytvorenie gule s nejakými textúrami. Ak však chcete vytvoriť pôsobivú, profesionálne detailnú planétu, Orb je najlepší nástroj, ktorý máte. Nehovoriac o tom, že doplnok je bezplatný a má bezplatný návod, ktorý môžete využiť.

Orb bude fungovať pre 90 percent z nich a je neoceniteľným nástrojom pre previs. To platí najmä v kombinácii s inými zásuvnými modulmi After Effects alebo v kombinácii s 3D kamerou z 3D aplikácie, ktorú je možné importovať do After Effects spolu s doskami v popredí pre objekty, ako sú vesmírne lode.


2. Animation Composer

Povedzme, že sa ponáhľate a chcete animovať svoju vrstvu After Effects v zlomku sekundy? Najlepším riešením môžu byť predvoľby pohybu animácií - motion presets. Niekoľkými kliknutiami môžete doslova získať super plynulé odrazy a jednoduchú animáciu. Balík obsahuje viac ako 1000 presetov, takže si určite nájdete pohyb, ktorý sa vám páči.

Bonus: za týmto pluginom stoja Slováci z Mister Horse.

3. Duik

After Effects má dobrý základný systém rozhýbania postáv (rigging), ale Duik posúva rigging na úplne novú úroveň. Klienti stále častejšie požadujú Duik pre akúkoľvek pokročilú prácu s animáciou a plugin sa stáva kľúčovým prvkom animácie pre širokú škálu projektov. Tento doplnok je úplne zadarmo spolu so zvyškom doplnkov Rainbox After Effects. Určite sa oplatí naučiť pracovať s Duik pluginom. Ak sa vám plugin páči, podporte jeho tvorcov.

Ak vás zaujíma tento plugin a chcete sa venovať charakterovým animáciám a rozpohybovaniu postáv, pozrite si náš online kurz Character Animations, v ktorom sa venujeme práve DUIK pluginu.

4. Motion Boutique - Newton3

Newton3 je jedným z pluginov, ktorý by motion dizajnéri mali mať nainštalovaný. Je to v podstate 2D fyzika alebo matematický engine integrovaný do After Effects, ktorý vám umožňuje presúvať vrstvy realistickým spôsobom, pretože všetko je vypočítané za vás. Či už chcete ukázať hustotu, trenie, odskok, rýchlosť alebo gravitáciu, Newton3 toto všetko a ešte oveľa viac dokáže. 

Ďalšia vec, ktorú môžete urobiť, je vytvoriť realistické spoje medzi objektmi, takže môžete ľahko vytvárať zložité pohyby. Po dokončení simulácie sa animácia znova vytvorí v After Effects so štandardnými kľúčovými snímkami, takže si môžete prispôsobiť načasovanie podľa svojich predstáv. Cena tohto pluginu je však pomerne vysoká.

 5. Red Giant Trapcode Particular

Asi neexistuje zoznam najlepších pluginov pre After Effects, v ktorom by sa nenachádzal nejaký od Red Giant. A najväčším frajerom medzi ich After Effects pluginmi je určite Trapcode Particular.

Plugin Red Giant Trapcode Particular funguje podobne a a podľa nás aj oveľa lepšie ako plugin Particular World od After Effects. Tento plugin je pravdepodobne jedným z najstarších doplnkov After Effects, ktorý zostal veľmi aktívny a efektívny, keď motion dizajnéri potrebujú animovať častice, ktoré môžu byť založené na rôznych vzoroch, tvaroch alebo veľkostiach. To je veľmi užitočné pri vytváraní prvkov počasia, ako je dážď, sneh, oblaky alebo dokonca dym. Plugin sa vo veľkom sa používa vo filmovom priemysle. Ďalšie informácie a vizuálny toho, čo je možné vytvoriť pomocou pluginu, nájdete vo videu nižšie.

6. Motion Boutique - Pastiche

Tento plugin využijete vtedy, keď máte na časovej osi veľa malých vrstiev. Pastiche vám umožňuje presúvať, preskupovať a umiestňovať tieto vrstvy do jedného tvaru. Pastiche tiež poskytuje intuitívne ovládače na jemné doladenie polohy, mierky, rotácie a nepriehľadnosti vrstiev koláže. Stiahnite si skúšobnú verziu tohto pluginu a vyskúšajte pracovať s ním aspoň nejaký čas. Vyskúšajte tiež  skombinovať Pastiche s pluginom Newton3.

7. Video Copilot Element 3D

Ďalší úžasný plugin od spoločnosti VideoCopilot sa nazýva Element 3D. Umožňuje vám importovať 3D objekty do aktuálneho pluginu a animovať ich a textúrovať. Mnoho motion dizajnérov používa Element 3D na vytváranie krásnych filmových videí a výstupy vyzerajú veľmi profesionálne. Cena tohto pluginu je 189,95 USD cez Toolfarm.

8. DOF PRO

Vývojár Richard Rosenman sprístupnil DOF PRO (Depth Of Field Generator PRO), svoj populárny doplnok na generovanie hĺbky poľa vo Photoshope, pre After Effects. Od svojho prvého vydania v roku 2005 sa DOF PRO stal profesionálnou voľbou v motion design odvetví. Najmodernejšie funkcie DOF PRO poskytujú inovatívne a špičkové technológie, ktoré inde nie sú dostupné, výsledkom čoho je jeden z najvýkonnejších a najpokročilejších procesorov hĺbky poľa.

Medzi pokročilé funkcie patrí podpora chromatickej a achromatickej aberácie, diferenciácia bokehu ohniskovej roviny, astigmatizmus a efekty vinetácie, podpora vlastných máp clony a obnovenie hluku. K dispozícii je tiež plná podpora alfa kanála/priehľadnosti alebo podpora 32-bitových farieb. Cena pluginu je 199,99 USD.

Ďalšie zaujímavé pluginy

Medzi ďalšie veľmi zaujímavé pluginy, ktoré určite stoja za zmienku, patria Plexus 3, Boris Fx alebo Saber.

Plexus 3 umožňuje používateľom spájať bodky/trojuholníky s čiarami a animovať ich v 3D priestore. Okrem toho vám Plexus 3 umožňuje vytvárať, manipulovať a vizualizovať dáta procedurálnym spôsobom. Zjednodušene to znamená, že častice môžu byť animované a môžu mať medzi sebou vzťah.

Boris Fx má 3 hlavné pluginy: Sapphire, Mocha a Continuum. Všetky sú veľmi dobre známe v komerčnom a celovečernom filmovom priemysle. Ak máte chvíľu času, odporúčame pozrieť a vyskúšať skúšobnú verziu.

Saber je mimoriadne výkonný nástroj na osvetlenie a efekty pre širokú škálu účelov. Nielenže sa dá použiť na vytváranie lúčov svetla (napríklad svetelné meče), ale prichádza aj so širokou škálou prednastavení a možnosťou pracovať s maskami vrstiev.

Záver

Dúfame, že ste sa dozvedeli niekoľko zaujímavostí a nových vecí o vyššie uvedených pluginoch pre After Effects. Poznáte a používate zaujímavé pluginy pre After Effects? Podeľte sa o ne v komentároch nižšie. 

Skillmea tím

Sme jednotka v online vzdelávaní na Slovensku.

Na našom webe nájdeš viac ako 260 rôznych videokurzov z oblastí ako programovanie, tvorba hier, testovanie softwaru, grafika, UX dizajn, online marketing, MS Office a pod. Vyber si kurz, ktorý ťa posunie vpred ⏩

Mohlo by ťa zaujímať

5 zdrojov pasívneho príjmu pre dizajnérov
Tipy a triky
02.11.2021
Skillmea tím

5 zdrojov pasívneho príjmu pre dizajnérov

V tomto článku ti ukážeme možnosti, ako zarábať viac a generovať pasívny príjem. Diverzifikácia zdrojov príjmu je dobrá stratégia. Dnes ti priblížime 5 spôsobov, vďaka ktorým môžeš ako kreatívec popri svojom hlavnom zamestnaní zarábať viac. Každý pasívny príjem zahŕňa úvodnú investíciu. Tou môže byť čas, námaha a úsilie, peniaze alebo kombinácia všetkých prvkov. Začnime pekne poporiadku. 1. Vytváraj a predávaj dizajnové templaty / šablónyJednou z najpopulárnejších stratégií pasívneho príjmu, ktorú dizajnéri radi využívajú, je predaj rôznych hotových dizajnových vzorov online. Ak o tom premýšľaš, veľa nedizajnérov alebo začínajúcich dizajnérov pravidelne hľadá hotové šablóny na rôzne využitie od social media, cez newslettre až po dizajn webstránok. Skús vytvárať šablóny, ktoré sú univerzálne a využiteľné širokospektrálne, napríklad: • vizitky, • rôzne mockupy, • dizajn webstránok s rôznym zameraním, • prezentácie, • fotografie a ilustrácie, • životopisy, • ďalšie. Templaty môžeš predávať na rôznych portáloch (marketplace) ako sú napríklad Shutterstock, Adobe Stock, iStock, ale aj Canva nedávno spustila svoj marketplace. 2. Zdieľaj svoje znalostiAko dizajnér máš určite mnoho vedomostí a skúseností, o ktoré sa môžeš podeliť. Určite budeš mať dobrý pocit, keď pomôžeš začínajúcim dizajnérom zdieľaním svojich cenných poznatkov a zároveň tým vieš zarobiť peniaze navyše. Ako zdieľať svoje znalosti? Môžeš zorganizovať workshop či školenie, napísať knihu (ebook), vytvoriť online kurz alebo mentorovať dizajnérov začiatočníkov. Samozrejme, budeš musieť investovať čas do prípravy a vytvoreniu týchto vzdelávacích zdrojov, ale keď ich sprístupníš, z dlhodobého hľadiska sa môžu stať zaujímavým zdrojom príjmu. 3. Predávaj vlastné nástroje a assetyMedzi tieto nástroje a assety môžeme zaradiť napríklad ilustrácie, PSD zdrojáky, fonty, textúry, gridy, UI kity a mnoho ďalšieho. Iní dizajnéri sa môžu zaujímať o tieto zdroje a budú ich chcieť použiť vo svojich vlastných dizajnových výtvoroch. Pre teba pôjde o ideálny pasívny príjem, nakoľko síce vynaložíš čas na vytvorenie digitálnych produktov, ale potom ich budeš predávať znovu a znovu. Začať je jednoduché, existuje viacero stránok, kde môžeš svoje diela predávať, napríklad Envato Market, Vecteezy, Creative Market a ďalšie. 4. Navrhuj a predávaj merchPredaj vlastného tovaru je zaujímavý zdroj príjmu najmä ak už máš dostatočne veľké publikum, ktoré ťa sleduje. Najskôr sa teda povenuj budovaniu svojho brandu a followerov. Predaj merchu je v súčasnosti pomerne jednoduchý, využi medzinárodnú službu ako Printify alebo lokálny GoMerch. Ak už máš veľa sledovateľov, za zváženie stojí aj rozbehnúť Patreon či iné formy monetizovania obsahu, napríklad cez affiliate marketing alebo rôzne referral programy. 5. Vytvor členskú webstránkuAk to s budovaním dlhodobého online podnikania myslíš vážne, skvelou možnosťou je vytvorenie členskej webovej stránky. Môže to byť výhodné najmä vtedy, ak už máš napríklad blog a hľadáš spôsob, ako ho speňažiť. Členská webstránka bude účtovať poplatok (zvyčajne je na mesačnej alebo ročnej báze) za prístup k prémiovému obsahu. Obsahom môžu byť čokoľvek od dizajnových návodov, zdroje na stiahnutie alebo iný zaujímavý obsah pre dizajnérov. Prípadne sa zameraj na úplne iný typ používateľov a ponúkni im pridanú hodnotu, za ktorú sú ochotní platiť. Nie je ľahké začať a chvíľu trvá, kým sa stránka rozbehne a vybuduješ ju, ale ak sa tomu budeš venovať dlhodobo, môže to byť skvelá voľba. Tipy na záverJe dobré vedieť, čo je tvojou motiváciou pri tvorbe týchto vedľajších projektov. Ak sú to len peniaze, pristupuj k tvorbe organizovanejšie a s obchodným myslením, vyber si vedľajší projekt s potenciálom tvorby príjmu.  Mysli aj na časovú stránku veci a snaž sa spraviť si realistický odhad času, ktorý môžeš vedľajším projektom venovať. Máš na to pár hodín každý týždeň, alebo je to skôr sporadický voľný čas? Pred začatím projektu je teda dobré zvážiť množstvo času, ktoré máš k dispozícii.  Určite ber do úvahy aj priebežné požiadavky, ktoré tiež môžu zhltnúť nejakú porciu času a námahy. Vo všeobecnosti by sa dalo povedať, že grafika, tlačoviny či e-knihy sú dobré pre dizajnérov, ktorí neočakávajú, že budú musieť investovať veľa času na priebežnú podporu a servis. A veci ako šablóny, pluginy, blogy, komunitné webové stránky alebo online kurzy majú síce potenciál vysokého príjmu, ale na druhej strane vyžadujú aj potrebu intenzívnejšej podpory.
Zmena oblohy na fotkách vo Photoshope jediným klikom
Tipy a triky
11.03.2021
Ľudovít Nastišin

Zmena oblohy na fotkách vo Photoshope jediným klikom

Štandardný postup pri zmene oblohy na fotkách si vyžaduje istú zručnosť vo výberoch a maskovaní. Avšak s novým Photoshopom je na scéne aj veľmi zaujímavá funkcia, ktorá tieto časovo náročné postupy zlúčila v podstate do jediného kliknutia. Hovoríme o „Sky Replacement Tool“, ktorý nájdeme vo Photoshope 2021.  V tomto článku sa na túto funkciu pozrieme a ukážeme si to aj na príklade. Sky Replacement nájdeme v edit>Sky Replacement. Ihneď po otvorení tejto funkcie začne softvér automaticky analyzovať obrázok. Okamžite potom si sám vytvorí na danom obrázku masku oblohy a vymení ju za inú. Jediným klikom. Tento nástroj využíva Adobe Sensei (umelú inteligenciu spoločnosti Adobe). Je to niečo podobné ako funkcia „Select and Mask“, ktorá je v posledných verziách Photoshopu taktiež veľmi kvalitná. Asi to nebudeš využívať každý deň, no čas od času sa takáto úloha objaví. A vtedy je dobré o tomto nástroji vedieť, lebo si ušetríš čas. Nastavenie nástroja "Sky Replacement"Je to síce výmena oblohy na jeden klik, no väčšinou to treba trošku doladiť. Najprv si zvolíš obrázok oblohy z ponuky nástroja, ktoré sú v troch priečinkoch: Blue Skies, Spectacular a Sunsets. Máš samozrejme možnosť importovať si tam svoju vlastnú oblohu. Stačí kliknúť na ozubené koliesko v pravom hornom rohu a nájsť možnosť „Import Skies“ alebo cez ikonku + a nahrať si oblohu ako .jpeg súbor. Máme tu aj ďalšie nastavenie, o ktorých si treba niečo povedať. Shift Edge – cez tento slider si vieš doladiť okraje výberu a zbaviť sa tak prípadných nedotiahnutých miest, ktoré Photoshop až tak dobre nezvládol. Refine Edge Brush – pre prípad, že si tvoju pozornosť vyžaduje len nejaká malá časť výberu, máš k dispozícii aj známy nástroj z balíka „Select and mask“, ktorým tiež  vieš dotiahnuť prípadné nedokonalosti. Fade Edge – tento nástroj umožňuje vytvoriť jemnejší prechod pri horizonte obrázka. Photoshop ale väčšinou urobí robotu veľmi dobre a ďalšie úpravy okrajov nie sú zvlášť potrebné. Temperature, Brightness a Scale – tieto nástroje upravujú už samotnú oblohu. Väčšinou treba doldiť  je farebnosť, prípadne je príliš tmavá či svetlá. Alebo je nutné oblohu zväčšiť aby sedela s horizontom fotky. Všetko to sa dá upraviť v týchto Sky Adjustments  úpravách. Foreground Adjustments – máme možnosť doladiť farebne aj samotný obrázok mimo oblohy tak, aby sme celú kompozíciu čo najviac zjednotili. Keď si s výsledkom spokojný, je treba si ešte stanoviť, akým spôsobom sa má táto úprava aplikovať do obrázka. Je tu možnosť duplikovať vrstvu alebo output do nových vrstiev. Skvelé je, že tento nástroj je nedeštruktívny. Ak si vyberieš si vyberieš output do nových vrstiev, celá úprava sa zobrazí vo klasickej vrstve s maskou a spolu s adjustment vrstvami. Takto máš plnú kontrolu nad výsledkom a prípravu pre ďalšie modifikácie tejto kompozície. Sú však situácie, kedy ti Sky Replacement pomôže len čiastočne. Jednou z takých môže byť situácia, kedy sa snažíš vymeniť oblohu na obrázku s vodnou hladinou. A tá bude stále odrážať pôvodnú oblohu. V takom prípade bude potrebné tento odraz vyriešiť manuálne. Výhodou však je, že väčšinu potrebných masiek vrstiev už z tohto nástroja máš. Sky replacement tool je podľa nás skvelý nástroj a aj keď ho nebudeš používať každý deň, v tej pravej chvíli ti pomôže. Jeho ukážku si pozri aj na tomto videu, v ktorom sme sa pohrali so známou bratislavskou scenériou. Vymenili sme oblohu a odstránili všetky postavy. A všetko nám to zabralo len pár minút.
Lambda výrazy v Jave - časť IV.
Tipy a triky
30.10.2019
Skillmea tím

Lambda výrazy v Jave - časť IV.

Funkcionálne rozhraniaAk chcem používať lambda výraz, tak potrebujem na to rozhranie s jednou abstraktnou metódou. Daná metóda musí odpovedať popisu nášho lambda výrazu. Ak sa nad tým zamyslíš, tak v skutočnosti sa dané rozhranie môže volať hocijako. Na názve nezáleží. A aj metóda v tom rozhraní môže mať hocijaký názov, pre logiku lambda výrazu to nemá žiaden zmysel. Jediné, čo je dôležité je, aby metóda sedela s lamba výrazom v tom, čo vracia a to, čo je na vstupe metódy ako parameter. Bolo by úplne super, keby sme nemuseli vždy pri písaní lambda výrazu riešiť vytvorenie nového rozhrania, ktoré nám bude slúžiť ako typ daného lambda výrazu. Čo povieš? Povedali sme, si, že java nevytvorila nový typ pre lambdy. Pri písaní, sme si mohli všimnúť, že metódy sú často podobné. Vraciam nejaký typ alebo vraciam void a mám tam názov metódy tam sú alebo nie sú parametre. Sú tu nejaké paterny, nejaké vzorce, ktoré sa opakujú častejšie. Java nám ponúka niekoľko takých rozhraní, ktoré môžeme kľudne použiť. Tieto rozhrania sú v balíčku java.util.function. V tomto balíku je mnoho pred pripravených rozhraní, ktoré môžeš používať. Tieto rozhrania používajú generiká, tak si tam vieš dosadiť objekty aké potrebuješ. Napríklad Predicate je presne stvorený na to, ak potrebujeme zobrať na vstupe objekt a vrátiť boolean ako návratovú hodnotu. Takto môžeme použiť toto rozhranie namiesto toho rozhrania, čo sme si sami napísali, keď sme riešili predchádzajúcu úlohu. Ako ošetriť výnimky Spravme si príklad, ktorý bude obsahovať zoznam osôb, ktoré budem spracovávať – vypíšeme ich mená a dáme ich na veľké písmená. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba("peter", "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby); } private static void processOsoby(ArrayList<Osoba> osoby) { for (Osoba osoba : osoby){ System.out.println(osoba.getMeno().toUpperCase()); } } } Prepíšeme si to na lambda výraz. Náš kód, ktorý chceme metóde predať ako argument je System.out.println(osoba.getMeno().toUpperCase()). Pracujem teda len s objektom osoba. Výsledok napíšem na konzolu. Tým pádom mám jeden argument a tento kus kódu nevracia žiadnu hodnotu. Budeme na to potrebovať funkcionálne rozhranie, ktoré má metódu s jedným parametrom a nevracia nič. Takým je Consumer s jeho metódou accept. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba("peter", "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, osoba -> System.out.println(osoba.getMeno().toUpperCase())); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } } Teraz si náš zoznam osôb zmením tak, že namiesto mien dám do zoznamu null. Pri spracúvaní lamba výrazu nám program spadne na NullPointerException. osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba(null, "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28));Musíme si ošetriť túto výnimku. Ako na to? Jedným zo spôsobov je obaliť volanie consumer.accept do try catch bloku. private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ try { consumer.accept(osoba); }catch (NullPointerException e){ //... } } }Ale to je škaredé riešenie. To čo príde do consumer môže byť všeličo možné a nemusí to dať NullPointerException, možno to bude iná výnimka. Náš kód chceme mať jednoduchší. Druhou možnosťou je, aby bola výnimka spracovaná priamo v lamba výraze. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba(null, "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, osoba -> { try { System.out.println(osoba.getMeno().toUpperCase()); }catch (NullPointerException e){ e.printStackTrace(); } }); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } }Dosiahol som to, že metóda processOsoby je krajšia, ale náš lambda výraz je teraz viacriadkový a nie pekný - jednoriadkový. Na jednej strane chceme mať pekné jednoduché lambda výrazy, na druhej strane chceme, aby bolo postarané o výnimky. V našom kóde sa vráťme k riešeniu, ktoré nepoužíva try catch blok. Na odchytenie výnimky použijeme wrapper metódu. Try catch blok si vyvedieme do osobitnej metódy a potom obalíme náš lambda výraz, ďalším lambda výrazom, ktorý má try catch blok. Urobme to, čo som teraz napísal. Vytvoríme si novú metódu, ktorá bude akceptovať lambda výraz. V našom prípade sme na to použili Consumer rozhranie. A keďže je to wrapper, tak to čo mi príde na vstup tak dám aj na výstup. private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return consumer; }V metóde processOsoby(osoby, osoba -> System.out.println(osoba.getMeno().toUpperCase())); zavolám namiesto lambda výrazu, wrapper metódu, ktorej argument bude lambda výraz. Urobí to to isté, ale použil som wrapper metódu. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba("peter", "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, wrapperLambda(osoba -> System.out.println(osoba.getMeno().toUpperCase()))); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return consumer; } }Tu môžem spraviť nasledujúcu vec. Namiesto toho aby som lambdu prehnal cez wrapper metódu, tak ju ani nepoužijem, ale použjime len jej vstupný parameter, čo je osoba. Môžem spraviť niečo takéto: private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return osoba -> System.out.println(osoba.getPriezvisko()); }Namiesto toho, aby som využil vstupnú lambdu, ktorá mi prišla cez parameter consumer, som na ňu zabudol a len som využil vstupný parameter danej lambdy a vytvoril som novú lambdu. Pri volaní consumer.accept(osoba); v metóde processOsoby sa vykoná lambda výraz z wrapper metódy. Toto nie je skutočný wrapper. Skutočný wrapper, zoberie vstupnú lambdu a vykoná čo požaduje. Teraz máme istotu, že sa zavolá presne náš požadovaný lambda výraz a zároveň môžeme pridávať kód okolo. private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return osoba -> consumer.accept(osoba); }Tu prichádza narad try catch blok v wrapper metóde. Upravíme si kód, aby nám hádzal výnimku. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba(null, "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, wrapperLambda(osoba -> System.out.println(osoba.getMeno().toUpperCase()))); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return osoba -> { try{ consumer.accept(osoba); }catch (NullPointerException e){ System.out.println("Null pointer exception in wrapper lambda"); } }; } }Ak sa zastavuješ pri myšlienke, že sme nič nezjednodušili, len sme presunuli kód na iné miesto, tak máš pravdu, ale! Ak si danú metódu spravíš generickú, tak si do tejto metódy môžeš zabaliť hocijakú lambdu, ktorej typ je Consumer rozhranie. Škoda, že tvorcovia javy nespravili takéto wrapper metódy pre všetky funkcionálne rozhrania z balíku java.util.function. private static<T> Consumer<T> wrapperLambda(Consumer<T> consumer){ return osoba -> { try{ consumer.accept(osoba); }catch (NullPointerException e){ System.out.println("Null pointer exception in wrapper lambda"); } }; } Pokračovať s Lambda výrazmi budeme opäť v ďalšom článku. Moje meno je Jaro Beňo a naučím ťa programovať v Jave. Ahoj.

Nezmeškaj info o nových kurzoch a špeciálnych ponukách