Comment utiliser la réflexion pour invoquer une méthode avec des paramètres?
Voici ma classe:
public class A{
private void doIt(int[] X, int[] Y){
//change the values in X and Y
}
}
J'ai une autre classe qui est d'essayer d'utiliser doIt
de modifier les deux tableaux. J'ai une erreur dans mon code, mais ne peut pas le trouver.
public class B{
public void myStuff(){
A myA = new A();
int[] X = {1,2,3,4,5};
int[] Y = {4,5,6,7,8,9};
Method doIt = A.class.getDeclaredMethod("doIt",new Object[]{X,Y}); //error
doIt.setAccessible(true);
doIt.invoke(myA,new Object[]{X,Y});
}
}
Toute aide sur la façon de résoudre méthode myStuff
?
Si j'utilise getDeclaredMethod("doIt",new Object[]{X,Y});
le code ne compile pas.
Si, au contraire, j'ai getDeclaredMethod("doIt",null);
puis il dit NoSuchMethodException
.
source d'informationauteur kasavbere
Vous devez vous connecter pour publier un commentaire.
Votre méthode est déclarée avec deux int tableaux
et si vous wan pour trouver la méthode, vous devez également mettre ses types d'argument pour éviter de trouver une autre méthode du même nom, mais différents types.
La
doIt
méthode prend deux paramètres. Par conséquent, vous devez passer deux paramètres, en plus du nom de la méthode, àClass#getDeclaredMethod()
. Les deux autres paramètres doivent être des instances deClass
unObject[]
est évidemment pas. Plus précisément, lesClass
instances doivent être les mêmes que les types des paramètres quidoIt
accepte.N'est-ce pas?