Zdravím,
ano, těžko si to představit, ten mechanismus vzniku NPE asi bude opravdu trochu 
jiný... Nicméně "znullovat" objekt při jeho mazání není dobrý nápad, ať už to 
znamená cokoliv   Spíš bych na OrdeItem udělal (resp. podědil z předka) metodu 
delete(), která bude pouze nastavovat vnitřní boolean property a persistence 
pak podle toho bude vědět, že má objekt smazat.

Roman




From: Libor Jelinek 
Sent: Thursday, June 09, 2011 10:38 AM
To: Java 
Subject: Re: Jak co nejlépe zareagovat na znullování objektu?


Ano, těžko si to představit. Kompletní popis by byl rozsáhlý. Ale stručně je to 
asi tak, že mám modul v NetBeans Platform, který poskytuje POJO jiným modulům. 
V určitý moment se z POJO stanou JPA managed entities. Odkazy, ale ale již 
existují např. z TableModelů Swingové JTable a ještě ke všemu v jiném dalším 
třetím modulu. Navíc si řízení a načítání modulů řídí NBP více méně podle sebe 
samo.

Jen výpis zrovna této NullPointerException je asi tak cca 90-100 volání :-) V 
téhle "džungli" se pak můžou dít věci a to je pak debugging jak má být :-)



Dne 9. června 2011 10:29 Martin Beránek <[email protected]> napsal(a):

  Dne 9.6.2011 09:15, Libor Jelinek 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



  Nechápu jakým způsobem jste vlastně k tomuhle problému přišel. Pokud mám 
metodu která s objektem pracuje a pak si musím na začátku zkontrolovat, jestli 
mi někdo nepředal null. Ale v průběhu metody nejde nijak zvenku znullovat 
objekt, na který držím referenci.

  -- 
  Martin Beránek


<<Emoticon1.gif>>

Odpovedet emailem