Java-Appel et exécution de méthodes
Quelle est la différence entre l'invocation et de l'exécution d'une méthode ? Sont deux de la même chose ?
5 answers
Je ne pense pas que ce soient des termes standard. Cependant, je les comprends de la manière suivante:
- l'invocation est l'événement d'émission de l'appel à la méthode; techniquement - placer la méthode sur la pile
- l'exécution est l'ensemble du processus d'exécution de la méthode - de l'invocation à l'achèvement. Et le temps d'exécution est la période pendant laquelle le corps de la méthode s'exécute.
Eh bien, invoquer une méthode signifie l'appeler par son nom et ses paramètres; exécuter une méthode signifie l'exécuter.. l'exécuter, récupérer ses lignes une par une et les exécuter.
Je ne connais aucune définition standard de celles-ci, mais ma compréhension est la suivante:
- l'invocation est l'acte d'appeler une méthode
- l'exécution est l'acte d'exécuter réellement la méthode
L'invocation entraîne l'exécution.
Il y a quelques différences subtiles:
- Contexte
- Un contexte d'invocation est associé à l'appelant
- par exemple, les paramètres que vous utilisez pour appeler une méthode sont les paramètres
- Un contexte d'exécution est associé à l'appelé
- par exemple, les paramètres que vous utilisez dans une exécution de méthode sont des paramètres formels
- Un contexte d'invocation est associé à l'appelant
- Répartition dynamique
- Une invokation de méthode peut conduire à l'exécution de l'une des nombreuses méthodes
- Une méthode d'exécution est justement une méthode d'exécution
- Ordre: l'invocation précède l'exécution
- L'invocation d'une méthode ne démarre pas immédiatement son exécution
- Imaginez si la méthode est distante
- L'échec de l'invocation peut être causé par une connexion rompue, une erreur dans la gestion des arguments sur le fil, etc.
- Une méthode ne commence à s'exécuter qu'après succès
- L'invocation d'une méthode ne démarre pas immédiatement son exécution
Voir aussi: Vue d'ensemble de l'invocation de méthode distante . Lorsque vous considérez la méthode comme distante, la différence entre l'invocation (une demande pour démarrer l'exécution de quelque chose) et l'exécution (quelque chose qui se passe quelque part si la demande réussit) devient plus apparente.
Considérons aussi le cas de la réflexion. C'est une méthode de java.lang.reflect.Method
:
public Object invoke(Object obj, Object... args) throws
IllegalAccessException, // failure during invocation
IllegalArgumentException, // failure during invocation
InvocationTargetException // invocation was successful,
// but exception was thrown during execution
Ici aussi clairement l'invocation et l'exécution sont deux des choses différentes. Si vous avez besoin de plus de conviction, considérons le cas d'une invocation vs exécution NullPointerException
dans ce contexte de réflexion:
- Il peut être lancé lors de l'invocation, lorsque
obj == null
lorsque la méthode est une méthode d'instance - , Il peut être levée lors de l'exécution, auquel cas il sera enveloppé la cause de
InvocationTargetException
À ma connaissance:
L'invocation est la pré-étape pour l'exécution. Si l'invocation réussit, le processus d'exécution commence...
Par exemple
Les paramètres (les variables déclarées dans la signature de la méthode) seront créés uniquement pendant la méthode invocation.It est la pré-étape pour l'exécution. Après l'appel, la méthode réelle sera exécutée, c'est-à-dire que les variables locales(les variables déclarées dans le corps de la méthode) seront créées pendant l'exécution de la méthode.
Donc les paramètres sont à l'invocation et les variables locales sont à l'exécution...
Ainsi, l'invocation réussie conduit à procéder à l'exécution.