Ahoj.
No podle mě, pokud se v kódu pracuje s proměnnou, která může být null, měl
by s tím kód počítat. Prostě to považovat za jeden z možných stavů. Čili kód
by vypadal takto:
if (item != null) {
...
} else {
...
}
Láďa
Dne 9. června 2011 9:15 Libor Jelinek <[email protected]> napsal(a):
> Dobrý den!
> Chtěl bych probrat, jak by kdo řešil následující problém ochrany proti
> NullPointerException pokud s jednou referenční proměnnou pracuje současně
> více částí aplikace (více Swing formulářů nebo JPA perzisence a JavaServer
> Faces web GUI současně apod.).
>
> OrderItem item = new OrderItem();
>
> *// V nějaké vrstvě se při vytváření položky nastaví nějaké hodnoty*
> item.setPN(123);
> item.setQty(2);
>
> *// V jiné vrstvě uživatel smaže položku. Reference je na null.*
> item = null;
>
> *// Další vrstva to neví a zavolá, což **skončí chybou
> NullPointerException*
> item.getPN();**
>
> Jak k tomu co nejlépe přistoupit? Mě napadají tak dvě možnosti:
> 1. Do do getter metod přidat kontrolu na na null a v tom případě vrátit
> např "-1".
> 2. Oznamovat si změny např. beanovským PropertyChangeListener, což by ale
> hodně zkomplikovalo kód.
>
> Budu rád za Vaše názory.
> Libor
>