Java - вызов метода и выполнение - PullRequest
13 голосов
/ 21 марта 2010

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

Ответы [ 5 ]

19 голосов
/ 21 марта 2010

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

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

Я не знаю ни одного стандартного определения этого, но мое понимание таково:

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

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

4 голосов
/ 21 марта 2010

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

1 голос
/ 17 декабря 2010

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

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

Например,

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

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

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

1 голос
/ 21 марта 2010

Существуют некоторые тонкие различия:

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

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

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