2010-03-21 15 views

Odpowiedz

15

Nie sądzę, że są to standardowe warunki. Jednak rozumiem je w następujący sposób:

  • inwokacja jest zdarzenie wystawienia wywołanie metody; technicznie - umieszczenie metody na stosie
  • to cały proces uruchamiania metody - od wywołania do zakończenia. I czas wykonania jest okresem, w którym działa ciało metody.
3

Cóż, wywołanie metody oznacza wywołanie jej przez nazwę i parametry; wykonanie metody oznacza wykonanie jej ... uruchomienie, pobranie linii po linii i uruchomienie.

1

Istnieją pewne nieznaczne różnice:

  • kontekstu
    • kontekście wywołanie jest związany z wywołującego
      • np parametry których używasz do wywołania metody są rzeczywiste parametry
    • kontekście wykonanie jest związane z odbierającym
      • np parametry których używasz w realizacji metody są parametry formalne
  • Dynamiczny wysyłka
    • Sposób invokation może prowadzić do realizacji jednego z wielu metod
    • Metoda wykonywania jest dokładnie jeden wykonywania metoda
  • Order: inwokacja poprzedza egzekucja
    • Inwokacja metody nie od razu rozpocząć jego wykonanie
      • Wyobraź sobie, jeśli metoda jest odległa
      • Inwokacja awaria może być spowodowana przez złamaną połączenia, błąd w obsłudze argumenty nad drutu, itp
    • Sposób rozpoczyna się wykonywanie tylko po wywołaniu jest udany

See także: Overview of Remote Method Invocation. Gdy rozważasz, że metoda jest odległa, różnica między wywołaniem (żądanie uruchomienia wykonania czegoś) a wykonaniem (coś, co dzieje się gdzieś, jeśli żądanie się powiedzie) staje się bardziej widoczna.

Rozważ również przypadek z refleksją. Jest to metoda 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 

Tu również wyraźnie inwokacja i wykonanie to dwie różne rzeczy. Jeśli potrzebujesz bardziej przekonujące, rozważmy przypadek inwokacji vs wykonanie NullPointerException w tym kontekście refleksji:

  • Może być rzucony podczas inwokacji, gdy obj == null gdy metoda jest metodą instancji
  • Może być rzucony podczas wykonanie, w którym to przypadku zostanie owinięty jak przyczynę danego InvocationTargetException
+0

Czy masz dla nich referencje? Zwłaszcza definicje kontekstów. –

3

nie jestem świadomy żadnej standardowej definicji tych, ale moje rozumienie jest takie:

  • inwokacja to akt wywołanie metody
  • egzekucja jest aktem faktycznie uruchamiania metody

wyniki inwokacji w realizacji.

1

ile moja wiedza jest problemem:

Inwokacja jest pre-krok do wykonania. Jeśli wezwanie się powiedzie, to proces realizacji rozpoczyna ...

Na przykład

parametry (zmienne zadeklarowane w sygnaturze metody) zostaną utworzone tylko w metodzie invocation.It jest pre-krok do realizacji . Po wywołaniu zostanie wykonana rzeczywista metoda, tzn. Zmienne lokalne (zmienne zadeklarowane w treści metody) zostaną utworzone podczas wykonywania metody.

więc parametry są w invocating i zmienne lokalne są w wykonaniu ...

Zatem skuteczne wezwanie prowadzi przystąpić do realizacji.

+0

Chcę usunąć ten punkt ** zmienne lokalne (zmienne, które są zadeklarowane w treści metody) zostaną utworzone podczas wykonywania metody **, zmienne są zadeklarowane podczas fazy kompilacji kodu, a wykonanie nastąpi tylko w Przypadek wywołania funkcji. – LeoAref