[jdom-interest] detach() [eg]

Jason Hunter jhunter at acm.org
Wed Apr 25 13:32:09 PDT 2001


Patrick Dowler wrote:
> 
> Moving an element is:
> 
>    el.getParent().removeContent( el ); // ignoring boolean return
>    newParent.addContent( el );

You should never write that code.  You'll get a NullPointerException if
the parent is null, which happens if the elt is a root or (more
commonly) if the elt is just unattached at the moment.  The *real* code
to handle a move is ugly without detach().

> Personally, is it really all that bad to use setRootElement() instead of detach()?
> 
>    Element oldRoot = doc.getRootElement();
>    doc.setRootElement( new Element("junk") );
> 
> So, you have to create a single Element that is otherwise wasted. 

It's not wasting an object.  It's that without detach() you have to do a
lot of special casing depending on if the elt is:
1) attached to a doc -- call setRootElement() on another
2) attached to an elt -- call getParent().removeContent()
3) attached to nothing -- know to call nothing or risk NPE

-jh-



More information about the jdom-interest mailing list