Package uk.ac.starlink.util
Class ObjectFactory<T>
java.lang.Object
uk.ac.starlink.util.ObjectFactory<T>
Manages dynamic creation of objects from a known set of classes.
An ObjectFactory keeps a list of classes with associated nicknames;
the idea is that you can obtain an instance of a given class by
supplying the nickname in question.
Instead of a nickname you can use the fully qualified classname,
whether or not it has previously been registered.
Any class registered must be a subclass of the superclass specified
when this factory is constructed, and must have a no-arg constructor.
- Since:
- 10 Aug 2005
- Author:
- Mark Taylor
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateObject
(String spec) Constructs and returns an object from one of the classes registered with this factory.Returns the class of which any object created by this factory is guaranteed to be an instance.getNickName
(Class<? extends T> clazz) Returns the nickname corresponding to the no-arg constructor of the given class.String[]
Returns a list of the nicknames which have been registered.boolean
isRegistered
(String name) Indicates whether this factory knows about a given name.void
Registers a class with its nickname.
-
Constructor Details
-
ObjectFactory
Constructor.- Parameters:
clazz
- type which must be a supertype of any class registered with this factory
-
-
Method Details
-
getFactoryClass
Returns the class of which any object created by this factory is guaranteed to be an instance.- Returns:
- clazz
-
register
Registers a class with its nickname.- Parameters:
nickName
- nicknameclassName
- fully-qualified class name
-
getNickNames
Returns a list of the nicknames which have been registered.- Returns:
- nickname array
-
isRegistered
Indicates whether this factory knows about a given name. This may either be a registered nickname or a fully qualified classname for a class which is a subclass of this factory's produced class.- Parameters:
name
- name- Returns:
- true iff
name
can sensibly be passed tocreateObject(java.lang.String)
-
createObject
Constructs and returns an object from one of the classes registered with this factory. If construction fails because the required class is not on the classpath or there is some error in class initialization, a LoadException is thrown. If the class is of the wrong sort (has no no-arg constructor, is not a subtype of this factory's supertype) a RuntimeException will be thrown.- Parameters:
spec
- classname/nickname of class to instantiate, followed by optional config text- Throws:
LoadException
- if the load fails for unsurprising reasons- See Also:
-
getNickName
Returns the nickname corresponding to the no-arg constructor of the given class.- Parameters:
clazz
- class to be constructed by this factory- Returns:
- nickname associated with no-arg constructor of supplied class, or null
-