Ceci est la suite de la question postée dans: How to load a jar file at runtimeComment accède-t-on à une méthode à partir d'un pot externe au moment de l'exécution?
Je ne suis pas certain de la façon de passer au niveau d'invocation de la méthode. D'après ma compréhension, de l'objet clazz, j'utiliserais getMethod ou getDeclaredMethod pour obtenir un objet Method à partir duquel j'appellerais invoke. Bien sûr, invoke nécessite une instance. Serait-ce alors ce qu'on appelle doRun dans le code d'exemple? Dois-je effectuer l'appel à la méthode doRun.run() même si je veux exécuter une méthode différente de la méthode main (en supposant qu'elle soit principale sur l'objet doRun appelé avec l'invocation d'exécution)?
Juste pour plus de précisions sur la publication originale, je demande: doRun.run() démarre-t-il un nouveau thread exécutant l'instance de l'objet de classe de type clazz?
Merci de m'avoir aidé à résoudre ce problème. J'ai regardé "how-should-i-charger-jars-dynamiquement-à-runtime" (désolé, seulement autorisé un lien hypertexte), mais cela semblait violer l'avertissement de la méchanceté Class.newInstance dans le premier post I référencé
Donc, si je comprends votre commentaire suivant le code, avec une interface, je sais quelles méthodes sont disponibles et peut écrire du code appelant la méthode directement après avoir lancé l'objet d'instance de manière appropriée. Est-ce vrai? – Todd
Bien sûr, cela suppose que le code original a été compilé en utilisant l'interface, pas un que je crée plus tard et que je tente de lancer l'instance. – Todd
@Todd - oui, vous l'avez. L'interface (ou une autre implémentation de type fort) est souvent utilisée avec des plugins où le code a été écrit pour être instancié dynamiquement. Si vous faites de l'introspection et de l'invocation sur des classes arbitraires, ce n'est pas une option. – McDowell