newInstance()

Hi!

Wenn ich eine Klasse mit newInstance() instanziiere, werden wie man an der leeren Parameterliste von newInstance() sieht, keine Parameter übergeben. Wenn die zu instanziierende Klasse, aber Parameter verlangt, wie kann ich sie übergeben?

Gruss - lutz

Wenn ich eine Klasse mit newInstance() instanziiere, werden
wie man an der leeren Parameterliste von newInstance() sieht,
keine Parameter übergeben. Wenn die zu instanziierende Klasse,
aber Parameter verlangt, wie kann ich sie übergeben?

Die Klasse Class bietet da zwei Methoden um an ein Constructor-Objekt zu kommen, getConstructor und getConstructors. Ersterer übergibst du ein Class-Array, dann kriegst du genau den Constructor der die Parameterliste wie in dem Class-Array gespeichert braucht (falls es ihn gibt), bei der zweiten Funktion kriegst du ein Constructor-Array und kannst dir da den richtigen rauspicken.

Das Constructor-Objekt hat dann eine Methode newInstance der du ein Object-Array übergibst, das sind dann die Parameter.

Sollte in etwa so aussehen (ist einfach so runtergetippt, können leicht Fehler drin sein):
// Class-Objekt holen
Class cMyClass = Class.forName( „MyClass“ );

// Parameter-Liste für das holen des Constructors,
// wir suchen den Constructor MyClass( String, Integer )
Class[] acParams = new Class[2];
acParams[0] = Class.forName( „String“ );
acParams[1] = Class.forName( „Integer“ );

// Constructor-Objekt holen
Constructor oConstr = cMyClass.getConstructor( acParams );

// Parameter-Liste mit Werten erstellen
Object[] aoParams = new Object[2];
aoParams[0] = new String( „TESTSTRING“ );
aoParams[1] = new Integer( 3 );

// Mit dem gewünschten Constructor und der Parameterliste eine
// Instanz von MyClass erzeugen.
MyClass oMyClass = oConstr.newInstance( aoParams );

Grüße, Robert