[jdom-interest] Re: Factories for Element creation

Patrick Dowler Patrick.Dowler at nrc.ca
Wed Nov 1 09:50:01 PST 2000


On Wed, 01 Nov 2000, you wrote:
> Just to clarify...I'm not really talking about "special" elements that
> know
> something extra that can be gleaned by parsing, but rather app-specific
> overloaded elements that will information added to them after the fact,
> not
> at creation time.
> 
> So, in fact, a "standard" SAXBuilder, etc., could just support no-arg
> constructors for custom "MyElement" style classes - assuming they are
> extensions of Element.  This eliminates the need for a factory, even, if
> one
> could just say "oh, by the way, when you construct a new element, make
> it:
> Class.forName( elementClass).newInstance(), and by default, elementClass
> is
> "org.jdom.Element".  Of course, this is assuming that all Element
> properties
> can be set in JavaBean style, and don't have to be passed in the
> constructor

This isn't actually true for Element: the name is set only by the constructor.
However, it is simple enough to find a Constructor that takes a single String
arg and use that to instantiate the Element subclass, so that doesn't stop one
from using this approach:

protected Element createElement(String name, String eClass)
{
                Class c = Class.forName( eClass ); // could be done once

                Class[] argTypes = new Class[1];   // once
                argTypes[0] = String.class;
                String[] args = new String[1];          // once
                args[0] = name; 
  
                Constructor ctor = c.getConstructor(argTypes);  // once

                return (Element) ctor.newInstance(args);
}

--

Patrick Dowler
Canadian Astronomy Data Centre




More information about the jdom-interest mailing list