Z Javy 8 na Javę 9, czyli co wybuchnie

Małe rzeczy zawsze cieszą. Jedną z nich jest możliwość bezproblemowego migrowania z Javy 8 na Javę 9. Fajnie by było, gdyby taka migracja przeszła bez większych zgrzytów, dlatego warto czasami rzucić okiem, co wypluwa nam nasz kompilator. A wypluć może on na przykład: Listing 1. Co nam mówi kompilator Warning:(30, 53) java: ‚_’ used as […]

Iterator filtrujący, czyli kontrakt iteratora w dwóch odsłonach

Dziś o tym, że kontrakt zawarty w dokumentacji można interpretować na wiele sposobów oraz dlaczego SRP jest istotne. Na 4p padło pytanie, jak ogarnąć problem iteratora, który będzie przy okazji filtrował kolekcję. Sama implementacja jest stosunkowo prosta: Listing 1. Iterator filrtujący public class FilteringIterator<T> implements Iterator<Optional<T>> { private final Iterator<T> iter; private final Predicate<T> predicate; […]

Jedno z dwojga – Either w akcji

Na początek kilka spraw organizacyjnych. Jak widać pisanie po wiosennym ruchu idzie mi średnio 🙂 Ale się staram. Powodów jest kilka, jeden ma 5 lat, drugi 2 miesiące 🙂 Do tego dość dużo pracy i zdecydowanie za krótka doba. 26 listopada będę mówił o Elixirze na Infomeet. Jak chcecie posłuchać dlaczego moim zdaniem warto, to […]

Java 9 nadchodzi – prywatne metody w interfejsach

Jedną z dużych zmian, jakie przyniosła ze sobą Java 8, było dopuszczenie implementacji metod w interfejsach. Używając słowa kluczowego default, możemy zdefiniować metodę, która będzie mieć implementację: Listing 1. Przykładowy interfejs z implementacją z Javy 8 interface SomeService{ default void validate(Client client){ Preconditions.checkNotNull(client); } default void someLogic(Client client){ validate(client); TransformedClient transformedClient = transform(client); emit(transformedClient); } […]

Pattern matching w Javie z Javaslang IV

Poprzednie części: Pattern matching w Javie z Javaslang I Pattern matching w Javie z Javaslang II Pattern matching w Javie z Javaslang III Początkowo chciałem włączyć temat tworzenia własnych wzorców do poprzedniego wpisu. Jednak ze względu na konieczność zrobienia kilku rzeczy, bez których będzie nam ciężko, postanowiłem wyłączyć ten temat do osobnego wpisu. Dodatkowe zależności […]

Pattern matching w Javie z Javaslang III

Poprzednie części: Pattern matching w Javie z Javaslang I Pattern matching w Javie z Javaslang II Dopasowania wartości z pierwszej części oraz predykatów z drugiej, to nie jedyne możliwości, jakie daje nam Javaslang. Dziś przyjrzymy się wzorcom, czyli specjalnym obiektom, które opisują proces dekonstrukcji danego obiektu tak, by można było go wykorzystać w dopasowaniu. Poznaliśmy […]

Pattern matching w Javie z Javaslang II

Poprzednie części: Pattern matching w Javie z Javaslang I Dopasowanie wzorców do wartości jest w sumie proste. Podobny efekt można uzyskać stosując mapy. Jednak Javaslang udostępnia też API, w którym dopasowanie oparte jest o predykaty. Przy czym są to predykaty biblioteki, a nie Javy 8. Listing 1. Dopasowanie z wykorzystaniem predykatu public void predicates() { […]

Pattern matching w Javie z Javaslang I

Gdy kilka dni temu wrzuciłem wpis o tuplach, prawie od razu pojawiły się pytania: hmmm…. a do czego takie dziwne konstrukcje ? taka sztuka dla sztuki Samodzielnie krotki rzeczywiście są mało przydatne. Co prawda czasami warto ich używać np. gdy potrzebujemy POJO, a nie można go stworzyć albo chcemy sobie zapewnić kolejność typów w strukturze. […]

Lenistwo ponad wszystko

Lenistwo to cnota programisty. Tylko leniwy programista zrobi daną rzecz porządnie za pierwszym razem, ponieważ jako istota leniwa nie będzie chciał wracać do nudnego zadania, a skupić się na czymś ciekawszym. Javaslang udostępnia nam klasę Lazy, która opakowuje leniwie wyznaczaną wartość. Motywacja Podobnie jak w przypadku memoryzacji funkcji chcemy zapamiętać wynik ciężkich obliczeń, by nie […]

Memory z funkcjami

Chyba nie pozostaje mi nic innego jak tłuc tematykę Javaslang w najbliższych dniach. Tego typu maratony mają tę zaletę, że można się dużo i szybko nauczyć. Dziś zapamiętywanie wyników działania funkcji. Jest to jeden z idiomów, które można zaimplementować samodzielnie, albo wykorzystać gotowe rozwiązanie. Funkcja niezmienną jest Przynajmniej funkcja, która jest czysta, czyli nie ma […]