Często spotykam się z opiniami, że null to czyste zło, ale jako amator często trafiam na przypadki, w których nie mam pomysłu na inne rozwiązanie. Przykładowo jeśli szukam w bazie danych jakiegoś obiektu, którego w bazie nie ma - otrzymuje null'a a chciałbym na nim wykonać wiele operacji. Użycie Optional.ofNullable(szukanyObiekt).isPresent() chyba też mija się z celem bo metoda isPresent() tylko sprawdza czy obiekt nie jest nullem. Wiem, że mógłbym użyć optionala.or/else
Nie za bardzo też rozumiem dlaczego przykład z bloga http://www.yegor256.com/2016/03/22/try-finally-if-not-null.html jest poprawny tj:
To zle bo jest if(null)
InputStream input = null; // nie wiem po co koles tutaj przypisywal null'a, chyba na sile, zeby pokazac jaki to null je fee
try {
input = url.openStream();
// reads the stream, throws IOException
} catch (IOException ex) {
throw new RuntimeException(ex);
} finally {
if (input != null) {
input.close();
}
}
A to podobno dobrze:
final InputStream input = url.openStream(); // czemu ten input nie jest w bloku try/catch ?
try {
// reads the stream, throws IOException
} catch (IOException ex) {
throw new RuntimeException(ex);
} finally {
input.close(); // a co jesli, input nie mogl 'otworzyc strumienia' i jest null'em ?
}