Przesłanianie zmiennych. Studium przypadku.

Jakiś czas temu poproszono mnie o pomoc przy kawałku bardzo prostego kodu, bardzo prostego oczywiście z mojej obecnej perspektywy.

Była tam jedna funkcja, która idealnie wpadła w cykl “studium przypadku”. Kod wyglądał mniej więcej tak:

public class Shadowing {
    
    private String name;
    
    String setname(String Name) {
        name = name;
        return name;
    }
}

Oczywiście kod nie działał, jak powinien. Jednak kompilator nie zgłaszał żadnych błędów, bo od strony językowej wszystko gra. Natomiast błędów logicznych było tu kilka, temu kawałek kodu wylądował na blogu.

Czytaj dalej Przesłanianie zmiennych. Studium przypadku.

Praca z czasem i datami w języku Java

Czasy zamierzchłe

Przed ósmym wydaniem Javy do obsługi dat używano dwóch klas – Date oraz Calendar. Praca z nimi nie należała do najprzyjemniejszych. Na co dzień irytowała niespójność API (np. dni numerowane od zera, a miesiące od jedynki), a przy szczególnych okazjach brak zabezpieczeń, gdy kilka wątków pracowało na tym samym obiekcie. Efekt był taki, że popularność zdobywały alternatywne biblioteki do zarządzania czasem, najpopularniejszą z nich była ta o nazwie Joda-Time

Nie poświęcimy tym dwóm klasom tutaj miejsca, bo Java 8 przyniosła ze sobą coś lepszego.

Czytaj dalej Praca z czasem i datami w języku Java

Java 14 – Więcej informacji przy NullPointerException

Java w wersji 14 daje możliwość uruchomienia rozszerzonych informacji o znanym i lubianym NullPointerException.

Standardowo, gdy odpalimy taki kawałek kodu:

    public static void main(String[] args) {
        howLong(null);
    }
    
    private static int howLong(String s) {
        return s.length();
    }

Dostaniemy taki oto wyjątek:

Exception in thread "main" java.lang.NullPointerException
	at NPEEx.howLong(NPEEx.java:12)
	at NPEEx.main(NPEEx.java:5)

Natomiast, gdy uruchomimy naszą aplikację z dodatkowym argumentem dla Virtual Machine

-XX:+ShowCodeDetailsInExceptionMessages

Dostaniemy już nieco więcej informacji

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null
	at NPEEx.howLong(NPEEx.java:8)
	at NPEEx.main(NPEEx.java:4)

I o ile w powyższym, prymitywnym przykładzie to nie potrzebujemy pomocy to, gdy mamy do czynienia z typowym anty-patternem “train wreck”:

person.getContactInfo().getAddress().getStreet()

To już dobrze wiedzieć co konkretnie się popsuło. Wówczas dostaniemy taką informację:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Address.getStreet()" because the return value of "ContactInfo.getAddress()" is null
	at NPEEx.main(NPEEx.java:5)

W IntelliJ możemy dodać argument do wirtualnej maszyny w menu Run -> Edit Configurations -> VM Options.

By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.

Java od Zera – Addendum – Java 11. Płatna czy darmowa?

Wraz z wersją Javy o numerku 11 nastał pewien chaos i zamieszanie. Mianowicie zmieniły się licencje i pojawiło się pytanie – Java 11 płatna czy darmowa? Skorzystam z okazji i wyjaśnię pewne rzeczy, bo takie akcje mogą tylko zaszkodzić osobom Javy dopiero się uczącym.

UWAGA! Kurs darmowy, zaktualizowany na stan z roku 2020 dostępny na https://kursy.clockworkjava.pl/java-fundamenty-programowania/

Czytaj dalej Java od Zera – Addendum – Java 11. Płatna czy darmowa?

Java – Od zera do aplikacji desktopowej. Część 6. Wprowadzenie do metod

Po wprowadzeniu podstaw klas i zmiennych nadszedł czas na ostatni z podstawowych klocków, które składają się na program – metody, zwane również funkcjami (a przynajmniej na poziomie podstawowym można śmiało te dwie nazwy stosować naprzemiennie). Na tapetę bierzemy, więc linijkę public static void main(String[] args)

UWAGA! Kurs darmowy, zaktualizowany na stan z roku 2020 dostępny na https://kursy.clockworkjava.pl/java-fundamenty-programowania/ Czytaj dalej Java – Od zera do aplikacji desktopowej. Część 6. Wprowadzenie do metod

Wzorzec Strategii – solo, spring i java 8

Jeśli framework Spring znajduje się na Twojej liście rzeczy do poznania 🙂 polecam swój kurs – “Spring Framework od podstaw” gdzie od zera tworzymy projekt Spring Boot i przechodzimy przez podstawowe funkcjonalności tego frameworka.

Kurs Spring Framework od podstaw

Natomiast jeśli to Wzorce Projektowe są kawałkiem programistycznego know-how, których chcesz lepiej poznać, zapraszam do zapoznania się z moim kursem Wzorce Projektowe, dostępnym na platformie Udemy.

Obrazek kursu link http://www.udemy.com/wzorce-projektowe/?couponCode=CLOCKWORK