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 ?

Author: skaffman, 2010-03-21

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.
 20
Author: Bozho, 2010-03-21 11:47:32

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.

 4
Author: Halo, 2010-03-21 11:39:21

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.

 4
Author: Joachim Sauer, 2010-03-21 12:05:34

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
  • 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

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
 1
Author: polygenelubricants, 2010-03-21 12:45:47

À 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.

 1
Author: Jothsna Nalla, 2010-12-17 10:00:28