Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.16.1

Aufruf von Konstruktoren


Um einen Konstruktor mit dem Reflection-API aufzurufen, muss zunächst das Constructor-Exemplar für den gewünschten Konstruktor ermittelt werden. Hierzu dient die Methode getConstructor() der Klasse Class, der zur Identifikation des richtigen Konstruktors ein Array mit den Parametertypen übergeben werden. Dieses Array muss die Class-Objekte der einzelnen Parametertypen enthalten, und zwar in der Reihenfolge, in der sie im Konstruktor deklariert sind.

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


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.