Das folgende Beispiel zeigt schematisch, wie eine Applikation eine Plug-in-Klasse laden und anschließend ein Exemplar erzeugen kann. Es wird dabei angenommen, dass der Konstruktor der Plug-in-Klasse über einen Parameter verfügt, und zwar ein Properties-Exemplar, mit dem die Applikation dem Plug-in globale Einstellungen übergibt.
public PlugInInterface loadPlugIn(String className, Properties settings)
throws ClassNotFoundException, NoSuchMethodException,
IllegalAccessException, InstantiationException,
InvocationTargetException {
Class plugInClass;
Constructor plugInConstructor;
PlugInInterface plugIn;
// Class-Objekt der Plug-In-Klasse ermitteln
plugInClass = Class.forName(className);
// Es wird ein Konstruktor mit einem Properties-Parameter gesucht
Class[] paramTypes = new Class[]{java.util.Properties.class};
Object[] paramValues;
// Konstruktor ermitteln
plugInConstructor = plugInClass.getConstructor(paramTypes);
// Zusammenbauen des Parameter-Arrays...
paramValues = new Object[] {settings};
// ... und Aufruf des Konstruktors
plugIn = (PlugInInterface)plugInConstructor.newInstance(paramValues);
return plugIn;
}
Zu beachten ist, dass die Parameterwerte des Konstruktors in Form eines Arrays vom Elementtyp Object übergeben werden. Dieses Array wurde im Beispiel mit der Zeile
paramValues = new Object[] {settings};
erzeugt. Für Parameter mit einfachen Datentypen muss ein Exemplar der entsprechenden Wrapper-Klasse erzeugt werden. Für einen Konstruktor mit einem int-Parameter müsste das Array also folgendermaßen belegt werden.
paramValues = new Object[]{new Integer(42)};
Material zum Beispiel