Java - вызов метода и выполнение

Каково различие между вызовом и осуществлением метода? Действительно ли два то же самое?

13
задан skaffman 21 March 2010 в 11:49
поделиться

4 ответа

Я не знаю каких-либо стандартных определений этих терминов, но я понимаю следующее:

  • вызов — это акт вызова метода
  • выполнение — это акт фактического запуска метода

Вызов приводит к выполнению.

4
ответ дан 1 December 2019 в 20:42
поделиться

Есть некоторые тонкие различия:

  • Контекст
    • Контекст вызова связан с вызывающим { {1}}
      • напримерпараметры, которые вы используете для вызова метода, являются фактическими параметрами
    • Контекст выполнения связан с вызываемым
      • например. параметры, которые вы используете при выполнении метода, являются формальными параметрами
  • Динамическая отправка
    • Вызов метода может привести к выполнению любого из многих методов
    • Выполнение метод - это точно один выполняющийся метод
  • Порядок: вызов предшествует выполнению
    • Вызов метода не сразу запускает его выполнение
      • Представьте, что если метод является удаленным
      • Ошибка вызова может быть вызвана разрывом соединения, ошибкой в ​​обработке аргументов по сети и т. Д.
    • Метод начинает выполняться только после успешного вызова

См. Также: Обзор удаленного вызова метода . Если вы считаете метод удаленным, разница между вызовом (запрос на запуск выполнения чего-либо) и выполнением (что-то, что где-то происходит, если запрос успешен) становится более очевидной.

Рассмотрим также случай с отражением. Это метод 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

Здесь также явно вызов и выполнение - это две разные вещи. Если вам нужно больше убедительности, рассмотрите случай вызова и выполнения NullPointerException в этом контексте отражения:

  • Оно может быть сгенерировано во время вызова, когда obj == null , когда метод является методом экземпляра
  • Он может быть сгенерирован во время выполнения, и в этом случае он будет заключен как причина InvocationTargetException
1
ответ дан 1 December 2019 в 20:42
поделиться

Я не думаю, что это стандартные термины. Однако я понимаю их следующим образом:

  • invocation - это событие выполнения вызова метода; технически - размещение метода в стеке
  • выполнение - это весь процесс выполнения метода - от вызова до завершения. И время выполнения - это период, в течение которого выполняется тело метода.
19
ответ дан 1 December 2019 в 20:42
поделиться

Вызов метода означает вызов его по имени и параметрам; выполнение метода означает выполнение его ... запуск, выборку его строк одну за другой и их запуск.

4
ответ дан 1 December 2019 в 20:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: