All of the subclasses of AbstractConfig (that I cared to look at) provide a public constructor that is not meant to be used. At the very least, these constructors should have javadoc along the lines of /** * Do not instantiate this class directly. * * @see ContentSection#getConfig() **/ public ContentSectionConfig() { ... } Ideally, the singletonness should be enforced rather than advised, unless there is some fundamental reason why it can't be enforced.
stale