# Class.forname(...).newI newInstance() ?



## Wurzelseppi (15. April 2005)

Hallo zusammen,

wie der Titel schon besagt, habe ich einen Klassennamen und will eine Instanz der zugehörigen Klasse erzeugen.
Jetzt habe ich ein Problem.

Diese Klasse hat nur Konstruktoren mit Parametern, und keine setter methoden für die Parameter, die ich normalerweise als Constructorparameter übergeben muss.

Also, ich muss es irgendwie schaffen, mit Class.forname(...).newInstance() (oder wie auch immer) einen Constructor mit Parametern aufzurufen.

Wahrscheinlich gehts so nicht, oder.....ich werd wenn dann an der Klasse selbst was ändern müssen (stellt sich schwierig da) oder über Reflection den richtigen Konstruktor such und von dem newInstance(....) aufrufen (stellt sich auch schwierig dar), oder?



Vielen Dank im voraus.


Gruß,


Wurzelseppi


----------



## Thomas Darimont (15. April 2005)

Hallo!

Siehe beispiel:

```
/**
 * 
 */
package de.tutorials.training;

import java.lang.reflect.Constructor;
import java.util.Date;

/**
 * @author Darimont
 * 
 */
public class Foo {

	private Long a;

	private String b;

	private Object c;

	private int d;

	public Foo(Long a, String b, Object c, int d) {
		this.a = a;
		this.b = b;
		this.c = c;
		this.d = d;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Class clazz = Class.forName("de.tutorials.training.Foo");
		Constructor ctor = clazz.getConstructor(new Class[] { Long.class,
				String.class, Object.class, int.class });

		Foo foo = (Foo) ctor.newInstance(new Object[] { Long.valueOf(1L),
				"Hallo", new Date(), 50 });

		System.out.println(foo);
	}

	public String toString() {
		return a + ", " + b + ", " + c + ", " + d;
	}
}
```

Gruß Tom


----------

