# Methodenaufruf per Reflection?



## byte (7. Apr 2006)

Hallo,

ich möchte es ermöglichen, verschiedene Implementierungen einer Methode zur Laufzeit dynamisch zu laden und auszuführen. Die Klassen, die diese Implementierung bereit stellen, müssen folgende Schnittstelle einhalten:


```
public String method(List<String> params)
```


Per Reflection kann ich ja nun Informationen der Klasse auslesen, also z.B. ob besagte Methode mit richtiger Signatur existiert. Das klappt auch problemlos. Aber wie kann ich nun dynamisch ein Objekt dieser Klasse zur Laufzeit erzeugen, um die Methode auszuführen? Name und Ort der Klasse ist mir bekannt, aber ich stehe irgendwie auf dem Schlauch und finde keine Möglichkeit, die mir ein Objekt der Klasse liefert. Alternativ könnte die Methode auch static sein, so dass ich nicht den Umweg über die Objektinstanzierung gehen müsste.

Irgendwelche Tipps?


----------



## bygones (7. Apr 2006)

ohne gewähr. - aber warum nicht einfach über newInstance() bzw. Class.forName() usw?


----------



## byte (7. Apr 2006)

Danke, mit Hilfe von newInstance() klappt es:


```
...
Class theClass = Class.forName(theClassName);
Object o = theClass.newInstance();
Method[] methods = theClass.getDeclaredMethods();
...
methods[0].invoke(o, params);
```

bzw. wenn ich die Methode statisch mache, braucht man die Instanz nicht:



```
...
Class theClass = Class.forName(theClassName);
Method[] methods = theClass.getDeclaredMethods();
...
methods[0].invoke(null, params);
```


----------

