Подтвердить что ты не робот

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

В чем разница между вызовом и выполнением метода? Две одинаковые вещи?

4b9b3361

Ответ 1

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

  • вызов - это событие выдачи вызова методу; технически - помещение метода в стек
  • Выполнение - это весь процесс запуска метода - от вызова до завершения. Время выполнения - период, в течение которого выполняется тело метода.

Ответ 2

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

Ответ 3

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

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

Вызов вызывает выполнение.

Ответ 4

Есть несколько тонких отличий:

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

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

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

Ответ 5

Насколько мне известно,

Вызов - это предварительный шаг для выполнения. Если вызов выполняется успешно, процесс выполнения начинается...

Например,

Параметры (переменные, объявленные в сигнатуре метода) будут созданы только во время вызова метода. Это предварительный шаг для выполнения. После вызова будет выполнен фактический метод, т.е. Локальные переменные (переменные, объявленные в теле метода) будут созданы во время выполнения метода.

поэтому параметры вызываются и выполняются локальные переменные...

Таким образом, успешный вызов приводит к продолжению выполнения.