Comment appeler la méthode d'un objet qui a déjà été chargé dans la JVM en utilisant la réflexion? J'ai essayéjava méthodes d'appel par réflexion d'un objet déjà chargé
Class myClass = Class.forName("myClass");
Method m = com.test.class.getDeclaredMethod("getValue",new Class[] {});
Object result = m.invoke(myClass,null);
mais je reçois java.lang.IllegalArgumentException: objet n'est pas une instance de déclarer classe. La méthode que je veux appeler est vide à savoir ne prend pas de paramètres
MISE À JOUR J'ai une application qui a déjà chargé une classe « A ». Une autre classe "B" sera instanciée par un framework. Lorsque la classe "B" est initialisée, la classe "A" a déjà été chargée dans la JVM. Je veux appeler une méthode de instance chargée de la classe "A" MAIS sans avoir une référence à "A" dans la classe "B". Dans les réponses, il semble que je doive créer une nouvelle instance de "A" dans la classe "B" mais je veux accéder à un objet déjà chargé. Si je crée une nouvelle instance de "A" dans "B", pourquoi voudrais-je utiliser la réflexion? Est-ce que je ne comprends pas quelque chose?
Merci
Quel est l'objet "déjà chargé" - et comment l'avez-vous "chargé"? –
La réflexion consiste à rechercher des informations sur un objet, sans trouver un objet en mémoire. Donc, si vous voulez qu'une instance de la classe B ait accès à une instance de la classe A, vous devrez lui donner un contrôle. – aperkins
@ user384706, c'est juste une supposition sauvage, mais peut-être que la méthode que vous voulez invoquer devrait être une méthode statique (de classe), plutôt qu'une méthode d'instance? En outre, dans votre mise à jour, vous semblez utiliser inconsciemment "class" et "instance". Ce que vous décrivez n'a pas beaucoup de sens pour moi. – Ladlestein