Bezpieczne przechodzenie po grafie obiektów

Image not found

URI: https://mariusz.wyszomierski.pl/npe_everywhere.jpg

Ścieżka na dysku: static/npe_everywhere.jpg

Używa Page Bundles: false

W Javie bezpieczne przechodzenie po grafie obiektów jest dosyć niewygodne. Odwołując się do kolejnych obiektów w łańcuchu musimy upewnić się czy nie są null'ami, aby uniknąć wyjątku NullPointerException.
W języku Groovy istnieje ciekawa konstrukcja/paradygmat do bezpiecznego przechodzenia po grafie obiektów.

Załóżmy, że graf obiektów wygląda następująco i „objectB" jest null:

1objectA->objectB->objectC->objectD

Bezpieczne odwołanie się do „objectD" w języku Java:

1if (objectA != null
2    && objectA.getObjectB() != null
3    && objectA.getObjectB().getObjectC() != null) {
4
5    return objectA.getObjectB().getObjectC().getObjectD();
6}

Ten sam zapis w języku Groovy:

1return objectA?.objectB?.objectC?.objectD

W Groovy konstrukcja ?. pozwala na bezpieczną nawigację po grafie obiektów. Przed wywołaniem kolejnych elementów łańcucha sprawdzane jest czy obiekt poprzedzający wspomnianą konstrukcję nie jest null.
Jeżeli podczas przechodzenia po grafie zostanie napotkany null jest on zwracany.