Avec la réflexion Java, comment instancier un nouvel objet, puis appeler une méthode dessus?
Je suis assez nouveau à Java, et je suis confronté à une question de réflexion.
Disons que j'ai dynamiquement l'appel à la méthode fooMethod
sur une instance de la classe Foobar
J'ai eu jusqu'à présent une instance de Foobar
avec:
Object instance = Class.forName("Foobar").newInstance();
Disons que je sais qu'il y a une méthode fooMethod
sur cet objet (je peux même vérifier avec Class.forName("Foobar").getDeclaredMethods()
) , comment l'appeler, s'il vous plaît?
source d'informationauteur Vinzz
Vous devez vous connecter pour publier un commentaire.
C'est dans le cas où la méthode n'a pas d'arguments. Si elle a, ajouter les types d'argument en argument à cette méthode.
obj
est l'objet de l'appel de la méthode.Voir la java.lang.Class docs
Purement réflexion: La méthode.invoquer.
L'autre solution consiste à demander à l'élément que vous reflectively la création d'implémenter une interface connue et la fonte de cette interface et de l'utiliser comme d'habitude.
Ce dernier est couramment utilisé pour les "plugins", l'ancien n'est pas utilisé très souvent.
Vous pouvez commencer par la lecture de ce sujet ici.
Comme pour le code, vous êtes après c'est comme cela (à partir de la même ressource):
Vous Pouvez Utiliser La Réflexion
échantillon de classe
et Utiliser quelque Chose Comme Cela-
étape 1:- Classe de Charge avec le nom de l'entrée que la Chaîne
étape 2:- Méthode get avec le nom et le type de paramètre
étape 3:- Appeler la Méthode En passant Instance de l'Objet et de l'argument
VOUS POUVEZ LE FAIRE À L'ÉTAPE 2 COMME ÇA AUSSI
(lorsque vous ne sais pas de méthode particulière existe dans une classe que vous vérifiez tous les méthode par méthode en boucle du tableau)
Cela devrait fonctionner pour vous: