Reflection, invoke dynamisch befüllen

Basti4231

Bekanntes Mitglied
Hi Leute,

ich bekomme als Input einen String, der alle Informationen über die Methode erhält, die ich ausführen muss. Ebenso sind darin alle Parametertypen sowie die Werte bekannt, die ich der Methode übergeben muss. Nun bin ich an dem Punkt angelangt, die Methode auszuführen über

Java:
method.invoke();

Ich müsste jetzt über

Java:
switch(numberArguments){}

die Anzahl an Argumenten feststellen, um dann zB. im Falle von 3 zu sagen:

Java:
method.invoke(obj, arg1, arg2, arg3);

Gibt es eine Möglichkeit, wie ich das dynamischer gestalten kann? Mir gefällt es nicht so gut über den switch - case hier zu arbeiten, da das ja nicht wirklich dynamisch ist. Bewusst ist mir, dass Methoden nicht all zu viele Argumente haben, aber da ich kein Maximum hart codieren möchte, suche ich eine Möglichkeit dies dynamisch umzusetzen.

Ich hoffe, da hat jemand wieder gute Ideen 😉

LG basti
 
Sehr schön, läuft. Danke dir!
Liegt das daran, dass ein Object[] auch ein Object ist, dass ich das als Parameter übergeben kann?

lg Basti
 
Liegt das daran, dass ein Object[] auch ein Object ist, dass ich das als Parameter übergeben kann?
Nein, das liegt daran, das
Code:
Object... args
nur ein "Shortcut" für
Code:
Object[] args
ist, und der Compiler aus dem Aufruf
Code:
call (Object o1, Object o2, Object o3)
ein
Code:
call(new Object[]{o1, o2, o3})
macht. Dein Beispiel ist übrigens ein Beweis dafür, dass das neue nicht immer das bessere ist.
 

Neue Themen


Zurück
Oben