Rufen Sie die Methode mit einem Array-Parameter auf, indem Sie reflection verwenden

8

Ich versuche, eine Methode zu schreiben, die eine statische Methode aus einer anderen Klasse ausführt, indem sie ein Array von Strings als Argumente an die Methode übergibt.

Folgendes habe ich:

%Vor%

So dass das:

%Vor%

Sollte dies ausführen:

%Vor%

Ich bekomme jedoch IllegalArgumentException s.

    
azz 11.04.2013, 14:32
quelle

3 Antworten

10

Sie haben zwei Probleme:

  1. Der Zielparametertyp ist String[] , aber Sie übergeben ein Object[]
  2. Sie übergeben das gesamte Befehlsarray als Argumente, einschließlich des Methodennamens

Die Probleme sind alle im inneren try -Block, also zeige ich nur diesen Code.

%Vor%

Danke Perception , um mich an das varargs-Problem zu erinnern

    
Bohemian 11.04.2013, 14:48
quelle
0

Die Methode, die Sie aufrufen möchten, erwartet das String-Array, jedoch übergeben Sie das Object-Array als Parameter. Ändern Sie es in String-Array Oder Sie können einen beliebigen Typ übergeben, wenn die Methode Objekt erwartet.

method.invoke (null, (Object) -Befehl);

    
Lavanya 11.04.2013 14:41
quelle
0

Basierend auf dieser Frage sieht es so aus, als ob der Anruf %Vor%     

Zim-Zam O'Pootertoot 11.04.2013 14:41
quelle