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>>
